SpringBoot Azure Active Directoryの最新ドキュメントを追跡する

SpringBoot Azure Active Directoryの最新ドキュメントを追跡する

最新のドキュメントについて

ベース1

基本的に最新のドキュメントは以下になります。

https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/spring/azure-spring-boot-starter-active-directory
上記をMSのドメイン内で表示しているのが以下になります。(画像が表示されない。)

https://docs.microsoft.com/en-us/java/api/overview/azure/spring-boot-starter-active-directory-readme?view=azure-java-stable
ただし、上の設定だけだと不十分で過去の情報も併せて読む必要があります。

以下、過去のチュートリアルのAzureAD側の設定が参考になります。
https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory
ただ、参考にするべき画像の内容が異なる。

最低限必要なスコープの情報が古いままとなっている。スコープとしてDirectory.AccessAsUser.Allを割り当てる必要があり、この権限はサインインしたユーザが存在しているディレクトリと同じ階層のユーザ情報にすべてアクセスすることができる権限となっている。上長に不信感を与えて両省が下りない状態となる。AzureAdversion3.1.0までこの状態で、3.2.0からDirectory.Read.Allとなり、サインインしたユーザの情報を読み取ることのみができる権限のみ必要な状態となる。

なので、画像は間違いで、Directory.Read.Allを設定する必要があることになる。

バージョンによって異なると思われるので詳細は以下ファイルを確認すること。

https://github.com/Azure/azure-sdk-for-java/blob/28993948d2cf44e1c2a13ff46120767ca232294f/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/aad/webapp/AADWebAppConfiguration.java#L126-L127
ここで言っている画像は以下になります。

補足知識 ドメイン知識 スコープ

スコープに関する記事 現状正しい情報を確認可能
https://docs.microsoft.com/en-us/graph/permissions-reference

ベース2 ログイン認可に必要なredirect-uriの制約に関する知識

ログイン時に必要に必要となるredirect-uriの制約(設定の変更はできないが認識する必要がある。)
サーバ側(AzureAD本体)のredirect-uriの設定を追加する必要がある。
この時に制約を知っておく必要がある。
https://docs.microsoft.com/en-us/azure/active-directory/develop/reply-url

補足知識

AzureADにはグループを認可局として扱うことができる機能がある。
認可局として扱う場合は、Springにはグループを設定する必要がある。
また、Spring側の設定にグループを追加する必要がある。
グループを設定したくない場合はAzureADのサーバ側に疑似的なグループを設定する必要がある。
また、session-statelessの設定を追加する必要がある。
https://docs.microsoft.com/en-us/java/api/overview/azure/active-directory-spring-boot-starter-readme?view=azure-java-stable

ベース3 ログアウト

SSOをAzureADが担保するためにアプリ側でセッションが切れている場合に通常のログアウトを行っても、AzureADサーバが担保するexpireの時間以内の場合は、自動的にログインした状態となる。ここを制御するためには、ログアウトのURLを設定する必要がある。
ログアウトについては以下を参考にする。
https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-web-app-sign-user-sign-in?tabs=java 特にURLが要//login.microsoftonline.com/common/oauth2/v2.0/logout

補足 最新情報を追う

最新リリースのソースを追う
下記ファイルの履歴やblameを確認して最新バージョン又はリリースバージョンのリビジョンを見つけることで特定のバージョンのソースを確認できる。
https://github.com/Azure/azure-sdk-for-java/blob/28993948d2cf44e1c2a13ff46120767ca232294f/sdk/spring/azure-spring-boot/pom.xml#L16

3.4.0リビジョンのソースは下記
https://github.com/Azure/azure-sdk-for-java/commit/a04075d5ce607d79d0b273b42b579b184dd0197d

認証のみの履歴を追う場合は、下記パッケージ配下の履歴だけを見れば十分追うことができる。
https://github.com/Azure/azure-sdk-for-java/commits/master/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/aad

リリースの状態を知りたいときは下記
https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/spring/azure-spring-boot/CHANGELOG.md
Springbootとのバージョンの関係を知りたい場合は下記
https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/spring/README.md
Spring Initializrの状態を知りたい場合は下記だが、更新が遅れる場合がある。
https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/spring/spring-reference.yml

SpringOAuth2の差異

spring-oauth2のデフォルトだけで対応できるソーシャルサービスの場合は、redirect-uriの設定を一部変更可能
spring-azure-active-directoryの場合は、変更は不可
サーバ側(AzureADの本体側)のredirect-uriの設定は変更ができる。

ログアウトの設定もデフォルトのSpringのとは逸脱している注意が必要

SpringOAuth2のデフォルトカスタマイズ情報。AzureADの認証にはほとんど使えないが、考え方は参考に独自内部認証サービスを作成する場合や、SpringSecurityの大枠を知るためには読む必要がある。
https://docs.spring.io/spring-security/site/docs/5.2.x/reference/html/oauth2.html