sidebarIdM実験室いろんなアイデンティティ管理系製品やサービスの実験の記録をしていきます。後は、関連するニュースなどを徒然と。ConnectのUserInfoエンドポイントを使ってユーザ情報を取得するこんにちは、富士榮です。Connectを使ってユーザの属性情報を取得してみます。ConnectのUserInfoエンドポイントから情報を取得します。Connect1.0の仕様を見ると、UserInfoエンドポイントは以下のように定義されています。Guideに記載されています。ADのUserInfoエンドポイントからユーザの属性情報を取得してみます。ADのエンドポイント情報を/.well-known/openid-configurationエンドポイントで確認します。普通にブラウザでエンドポイントにアクセスすると各種構成情報がJSON形式で表示され、エンドポイントのアドレスについても以下の通り確認できます。AD上にクライアント登録をするOAuth2.0のリソースアクセスなので、当然クライアントを事前に登録しておく必要があります。ADにおけるクライアント登録はディレクトリ設定の中のアプリケーションのメニューから行います。アプリケーションはWebアプリケーションとして登録し、URLの返信(redirect_uri)およびクライアントID(client_id)、キー(client_secret)を取得しておきます。clientを使って動作確認をしています。clienthttps://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo◆アクセスしてみるさて、実際にアクセスしてみたいと思います。取得したaccess_tokenをAuthorizationヘッダにつけてUserInfoへアクセス、情報を取得するという順に行います。Authorizationエンドポイントへアクセスしてcodeを取得するブラウザを使って以下のGETリクエストを発行します。state=12345すると、redirect_uriに指定したアドレスにクエリパラメータとしてcodeがついてきますので、値をコピーしておきます。session_state=9fac9xxxxx尚、codeの有効期限は非常に短いのでこの後の作業は手早く行う必要があります。clientを使います。先ほど取得したcodeおよびclient_id、client_secret、redirect_uriと合わせてgrant_typeにauthorization_codeを指定して、TokenエンドポイントへPOSTします。WjFotGxxxxxxxxx+imo=すると、以下の様にaccess_token、refresh_token、id_tokenが返ってきます。"eyJ0eXAiOiJKVxxxxxxxxEqegYSCaCaQrw"}もちろん以前紹介したようにid_tokenをデコードすればユーザの属性情報は取得できますが、あえてスルーします。取得したaccess_tokenをAuthorizationヘッダにつけてUserInfoへアクセスするいよいよUserInfoエンドポイントへアクセスします。clientでクエリを発行します。AAABAAAAixxxxxxxxWC0VQSAA結果、以下とおりJSONでユーザの属性情報が取得できます。Becker"}id_tokenの方が情報が多いですね・・・。ConnectのProviderの様にprofileやemailなどのscopeが使えず、openidのみしか指定できないので、取得するclaim(属性)を指定することは出来ません。v2.0用のAPIバージョン(oauth2/v2.0/のエンドポイント)ではUserInfoへのアクセスがまだ使えないので、マイクロソフトアカウントに関する属性情報の取得はできません。Helloっぽくログインする[告知]9月はイベント三昧。よりアクセス解析を行っています。品質向上のみを目的とし、個人の特定などを目的とはしておりません。中で公開されることはあります。問い合わせ不明点等は管理人までご連絡ください。本プライバシーポリシーは予告なく変更/削除することがあります。プライバシーに関するトラブルについては一切の責任を負いかねますのでご了承ください。