<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SSO &#8211; 株式会社カジトリ 技術ブログ</title>
	<atom:link href="https://develop.kajitori.co.jp/archives/tag/sso/feed" rel="self" type="application/rss+xml" />
	<link>https://develop.kajitori.co.jp</link>
	<description>Officeアドイン、Laravel、Exmentなどの技術記事を記載します。</description>
	<lastBuildDate>Tue, 26 Jan 2021 12:35:36 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://develop.kajitori.co.jp/wp-content/uploads/2021/01/cropped-logo1-32x32.png</url>
	<title>SSO &#8211; 株式会社カジトリ 技術ブログ</title>
	<link>https://develop.kajitori.co.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Officeアドイン】OfficeアドインでSSOを有効化し、ログインを1回のみにする[Preview版]</title>
		<link>https://develop.kajitori.co.jp/archives/34</link>
					<comments>https://develop.kajitori.co.jp/archives/34#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Wed, 22 May 2019 11:56:46 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<category><![CDATA[SSO]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=34</guid>

					<description><![CDATA[はじめに Officeアドインを開発時に気を付けなければいけない地雷まとめの「Officeのログイン者情報を、Officeアドインで取得することはできない」にも書いたのですが、Officeアドインの安定版では現在、「Of...]]></description>
										<content:encoded><![CDATA[<h1>はじめに</h1>
<p><a href="https://develop.kajitori.co.jp/?p=22">Officeアドインを開発時に気を付けなければいけない地雷まとめ</a>の「Officeのログイン者情報を、Officeアドインで取得することはできない」にも書いたのですが、Officeアドインの安定版では現在、「Officeにログインしているユーザー」を取得することはできません。<br />
<img decoding="async" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204834/ac1b3b4d-6691-8fcd-a5f9-f696395620f1.png" alt="画像" /><br />
どう考えても取れそうな「佐藤 裕」という情報が、残念ながら取得は出来ないのです。安定版では。  </p>
<p>そのため、もし「Officeアドインで、Office365のユーザー情報を取得してゴニョゴニョする」というアプリを検討していたとしても、ユーザーに再度ログインを強要する必要があります。<br />
これがクライアント版のOfficeならまだ良いのですが、Online版まで考えると本当に地獄。<br />
アプリがiframeで実装されているがゆえに、認証できず、dialogを表示する必要が出てしまいます。<br />
※これも<a href="https://develop.kajitori.co.jp/?p=22">Officeアドインを開発時に気を付けなければいけない地雷まとめ</a>の「認証が絡む場合、Office Onlineには本当に注意」を参照  </p>
<p>しかし、<b><span style="color: #ff0000">これがPreviewでは、一部できるようになります！</span></b><br />
Office系、それもAzure AD v2でのログインに限り、SSOとして、Officeのアプリにログインしている情報（正確にはアクセストークン）を取得できるようになるわけです。<br />
そのため、ユーザーはわざわざ2回目のログインを行う必要がなくなるわけですね。  </p>
<p>今回は、この「Office アドインのシングル サインオン」の概要をご紹介します。<br />
検証はまだなので、触りのみとなってしまうことをご了承ください。  </p>
<p><!-- more --></p>
<h1>概要</h1>
<p>基本的にはこちらの公式サイトをご参照ください。<br />
<a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins">https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins</a><br />
キーポイントをかいつまんで解説します。  </p>
<h3>流れ</h3>
<p><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2019/05/20190522000532-300x251.png" alt="" /><br />
※引用：<a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins">https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins</a></p>
<p>ざっくり流れをまとめると、以下のとおりです。</p>
<ul>
<li>
<p>Officeアプリ(各開発者が開発するWebアプリ)内のjsファイルで、getAccessTokenAsync関数を実行する</p>
</li>
<li>
<p>getAccessTokenAsync内の処理で、Officeプログラム（ExcelやWordの本体）に、現在ログインしているユーザー情報を取得するよう要求する</p>
</li>
<li>
<p>Officeプログラムにログインしていない場合、ログインするようユーザーに要求するダイアログを表示する</p>
</li>
<li>
<p>Officeプログラムは、Azure AD v2エンドポイントから、現在のユーザーの<strong>アドイン トークン</strong>を取得する</p>
</li>
<li>
<p>Officeプログラムから、getAccessTokenAsync関数の処理として、Officeアプリに、アドイントークンを返却する<br />
→アドイントークン(JWT)を解析して、ログインユーザーのメールアドレスなどを取得する  </p>
</li>
</ul>
<p>ユーザー情報などを取得するのみであれば、ここまでで処理は終了なのですが、Microsoft Graphなども絡める場合、以下の処理も必要になります。  </p>
<ul>
<li>
<p>Officeアプリから、サーバーサイドにアドイントークンを送信する</p>
</li>
<li>
<p>サーバーサイドで、Microsoft Graphなどで使用できるアクセストークンを取得し、Officeアプリに返却する</p>
</li>
</ul>
<p>このような処理になります。</p>
<h3>注意点</h3>
<p>ここからは、現在分かっている注意点を記載します。やはり地雷は多し。</p>
<h4>Office Insiderに参加が必要</h4>
<p>2019/05/21現在、プレビュー版のみ対応であるため、「Office Insider」に参加する必要があります。<br />
参加した上で、プレビュー版のOfficeをインストールする必要があります。</p>
<h4>Office2013や2016には非対応</h4>
<p>これがとっても大事ですね。<br />
SSOは「IdentityAPI」という要件セットが必要で、これは<strong><span style="color: #ff0000">Office2013や2016は非対応です。</span></strong>恐らく今後も。<br />
なので、このSSOを対応させるのであれば、2013や2016を切り捨てる必要がありますね。</p>
<h4>サーバーサイドの実装が必要</h4>
<p>これは実際のサンプルコードで実装した時に解説予定なのですが、Microsoft Graphなどのトークンを活用したい場合には、サーバーサイドの実装が必要になります。<br />
通常のhtmlとjavascriptだけのアプリを開発しよう！と思っても、それはNGなんですね。vueとかReactとかも多分NG。  </p>
<p>今回取得できるトークンは、あくまでも「アドイントークン」で、Microsoft Graphのアクセストークンではありません。<br />
Microsoft Graphのアクセストークンを取得する際には、別途サーバーサイドの処理が必要、ということを覚えておいてください。  </p>
<h1>まとめ</h1>
<p>このように、どうしても限定的な範囲にはなってしまいますので、これはOfficeストアのような全体公開向けのアプリではなく、組織内でのアプリの方が向いているかもしれないですね。<br />
また、現在はプレビュー版なので、いずれにせよ正式版に採用は難しいです。  </p>
<p>それでもメリットは十分にあります。Office365前提のアプリであれば、非常に便利な機能になることは間違いないです。  </p>
<p>実装の検証と、具体的な解説は次回行う予定です。ぜひお待ちください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/34/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
