OpenID Foundation Japan

Microsoft AzureのAzure Active DirectoryをOpenID Providerにする

はじめに

Microsoft AzureのAzure Active Directoryを用いて認証を利用している場合、当該認証情報を使ってアプリケーションにシングルサインオンを行うことが可能です。

Microsoft Azureの公式ドキュメントAzure Active Directory v2.0 と OpenID Connect プロトコルを参考にRelying Partyの登録を行うことで、Azure Active DirectoryがOpenID Providerとして振る舞います。

2018年5月現在ではImplicit Flowを用いたフェデレーションが可能です。

Azure Active Directoryの公開エンドポイント

Azure Active DirectoryではOpenID Connect Discoveryで定義されるMeatadataをhttps://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configurationのURLで公開しています。

{tenant}に当たる部分については、example.onmicrosoft.comのようなテナントのフレンドリドメイン名か、テナントのGUID識別子のいずれかを指定します。

Relying Partyの登録

Azure Active DirectoryをOpenID Providerとして、アプリケーションにシングルサインオンを行う場合、そのアプリケーションをRelying Partyとして登録する必要があります。

アプリ登録方法については、Microsoft Azureの公式ドキュメントv2.0 エンドポイントを使用してアプリケーションを登録する方法に記載されています。

エンタープライズアプリケーションの登録

エンタープライズアプリケーションからアプリケーションを登録することで、OpenID ConnectやSAMLを用いたシングルサインオン等の設定をほぼ自動で行えます。

登録するには、Azure Portalから「Azure Active Directory > エンタープライズ アプリケーション > 新しいアプリケーションの登録」を選択することで、エンタープライズアプリケーションのリストが表示されます

表示されたアプリケーションのリストから、連携したいアプリケーションを選択し、アプリケーション毎に指示される設定を行うことで、シングルサインオンの設定が可能となります。

アプリケーションの登録

任意のアプリケーションを登録し必要な設定を行うことで、OpenID Connectを用いたシングルサインオンの設定を行えます。

アプリケーションをRelying Partyとして登録するには、Azure Portalから「Azure Active Directory > アプリの登録 > 新しいアプリケーションの登録」を選択することで、登録画面が表示され、Relying Partyの登録を行うことができます。

登録時に必要な3つのパラメータが要求されます

  • 名前: アプリケーションを示す名前
  • アプリケーションの種類: Webアプリ/API または ネイティブ から選択
  • サインオンURL: アプリケーション自体のURL

これらを指定して登録を行うとアプリケーションの設定を行うことが可能になります。

アプリケーションの設定を変更する場合は、アプリの登録を行う画面から、先程登録したアプリケーションを選択し「設定 > プロパティ」から編集を行います。

この際アプリケーションIDとして記載されている値がClient IDです。

また、OpenID Connectを用いてシングルサインオンを行う場合は、Redirect URIの設定が必要になります。Microsoft Azureでは、当該URIを応答URLと記載しています。

応答URLの設定は「設定 > 応答URL」から設定が可能です。こちらにRedirect URIとして許可するURIを登録します。

以上の設定を行うことで、Azure Active Directoryからアプリケーションへフェデレーションを行うための設定は完了です。

注意

Azure Active Directoryでは、OpenID Connectを用いたフェデレーションだけでなく、OAuth 2.0を用いてAPIの認可を行うことも可能です。

response_typecodeもしくはtokenを利用することで、アクセストークンの発行が可能です。

2018年5月現在、Azure Active Directoryで、OpenID Connectを用いたフェデレーションを行う場合はresponse_typeid_tokenが付いていることが必須となっています。

この際response_type=code%20id_token等のリクエストも可能ですが、このリクエストにより発行されるcodeを用いて取得できるトークンにID Tokenは含まれないためご注意ください。

OpenID Connectを用いたシングルサインオンを行うに辺り、上記の設定のみでは認証完了後に同意画面が表示されません。同意画面を表示したいアプリケーションについては、認証要求時にprompt=consentを指定して認証要求をお送りください。