ADFS(Active Directory Federation System)のOpenID Connect 設定方法

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちは、サイオステクノロジー技術部 武井です。マイクロソフト社が提供するシングルサインオンのシステム「Active Directory Federation System」(以降、ADFS)が、OpenID Connectのプロバイダーになるんです。これが激しく便利でしたので、その設定方法を記載しますヮ(゚д゚)ォ!

OpenID Connectの詳細につきましては、本ブログの以下の記事をご覧ください。

多分わかりやすいOpenID Connect

OAuthやOpenID Connectで使われるstateパラメーターについて

JSON Web Tokenによる認証

設定してみましょう

ADFSの管理画面にアクセスします。「Application Group」を右クリックして、「Add Application Group…」をクリックします。

Screen Shot 2018-08-01 at 10.34.40

 

「Name」に任意の名称を入力、「Server application」を選択して「Next >」をクリックします。

Screen Shot 2018-08-01 at 10.35.20

 

「Redirect URI」に認証後にリダイレクトされるURLを入力して「Add」をクリックし、最後に「Next >」をクリックします。その前にClient Identiferはメモしておきます(あとで使うので)。

Screen Shot 2018-08-01 at 10.36.07

 

「Generate a shared secret」をチェックします。生成されるshared secretをメモしておきます(あとで使うので)。

Screen Shot 2018-08-01 at 11.46.05

 

内容に問題ないことを確認して「Next >」をクリックします。

Screen Shot 2018-08-01 at 10.38.20

 

「Close」をクリックします。

Screen Shot 2018-08-01 at 10.38.35

 

これで完了です(๑•̀ㅂ•́)و✧

試してみましょう

以下のURLをブラウザのURL入力欄に以下のURLを入力してください。

https://[ADFSのFQDN]/adfs/oauth2/authorize/?client_id=[先程メモしたClient Identifer]&response_type=id_token&redirect_uri=https://contoso.com/&scope=openid&state=hoge&nonce=hoge

※stateとnonceは適当です(´・ω・`)

response_typeはOAuthでいうところのフローを選択する項目なのですが、ここではid_tokenつまりImplicit Flowを選択してます。

するとADFSの認証画面が表示されるので、認証してください。認証すると以下のURLにリダイレクトされます。

https://contoso.com/?client-request-id=[先程メモしたClient Identifer]#id_token=[IDトークン]&state=hoge

上記の[IDトークン]がOpenID ConnectのIDトークンです。これをSP側で適切に検証すれば、認証が行えます。

ペイロードの部分をみてみましょう。base64でエンコードされているのでデコードします。

{
"aud":"[先程メモしたClient Identifer]",
"iss":"https://[ADFSのFQDN]/adfs",
"iat":1533099776,
"exp":1533103376,
"auth_time":1533099776,
"nonce":"hoge",
"sub":"XXXXXX",
"upn":"user01@exapmle.com",
"unique_name":"DEV\\user01"
}

upnにはActive DirectoryのUserPrincipalNameが入ってました。

最後に

激しく便利です。SAMLよりOpenID Connectの方が汎用性高いので、こっちのほうが使い勝手よさそうです。Azureの認証関連のサービスもOpenID Connectに対応しているものもたくさんあります。AzureのAPIゲートウェイであるAPI ManagementもOpenID Connetに対応してますし。ADFSで認証して発行されたOpenID ConnectのIDトークンをAPI Managementで検証して、その背後にあるAPIを呼び出すなんて、とっても便利な使い方だと思います(`・ω・´)シャキーン

アバター画像
About 武井 宜行 269 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる