Entra ID においてアクセス許可へのユーザー同意を削除する

2024/09/16
★★

要求されているアクセス許可へのユーザーの同意

Entra ID で認証を実装すると、認証時に同意画面が表示されるようになります。

alt text

これは、OAuth をベースとした Entra ID の同意のフレームワークにより実現されており、以下の記事にどのようなものなのかの概要の記載があります。

どのユーザーが同意を行ったかの確認は、[Azure Portal] - [エンタープライズ アプリケーション] から対象のアプリを選択し、[セキュリティ] - [アクセス許可] で確認できます。API の種類、クレーム(スコープ) 毎に、[許可元] 列の [合計 n 人のユーザー] リンクを選択することで、同意を行ったユーザーを確認できます。

alt text

アクセス許可へのユーザーの同意を削除

この同意画面ですが、一度同意を行うと同意画面が表示されなくなります。もちろん、これは正しい動作で問題はないのですが、アプリ開発時に同意画面を再現させてテストしたいと思ってもユーザー当たり一度しか表示されないので、複数ユーザーを用意してなんて考えると、手間がかかってしまいます。手間がかかるといって十分に同意画面を再現させた認証のテストを行わないと、本番環境で実行した際に、リダイレクト先の設定が誤っており、同意を行った際にエラーが画面が表示されてしまうなんてことも起こるかもしれません。

そこで、ユーザーの同意を削除したいと思ったのですが、以下のサイトに記載があるように、Azure Portal からではできないようです。

PowerShell, Microsoft Grah を使用すればできるようです。

alt text

Microsoft Graph Explorer によるユーザー同意の削除

今回は、Microsft Graph API を使用してユーザー同意の削除方法を説明したいと思います。

ツールとしては、Graph Explorer を使用します。Graph Explorer は、実際に API を実行し、実行結果を確認できる開発者ツールです。Postman の Microsft Graph API 特化版みたいなイメージです。

まず、以下にアクセスし、Graph Explorer を起動します。

右上のアイコンを選択し、アプリ登録をしたテナントのユーザーでサインインします。

alt text

ユーザーが複数のテナントに所属している場合、Graph Explorer では、テナント切り替えの UI がないようなので、以下のようにクエリパラメータで、テナント ID を指定して、テナントを切り替えできます。

https://developer.microsoft.com/graph/graph-explorer?tenant=<テナント ID>

このようにテナント ID を指定してもうまくいかないときは、ユーザーのアイコン内のメニューから、[Sign in with a different account] を選択して、再度サインインしてみてください。 私は、この方法で、指定したテナントにサインインできました。

alt text

まず、アプリケーションに付与された委任されたアクセス許可の一覧を取得してみます。

GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants

alt text

この時、以下のようなエラーが発生した場合は、エラーメッセージ通りアクセス許可 (Permission) を付与してやります。

alt text

[Modify permissions] を選択すると、API の実行に必要なアクセス許可 (Permission) が一覧されているので、[Consent] で許可をします。

alt text

正しく一覧を取得できれば、次に対象のアプリケーションを指定して API を実行します。 Azure Portal から、対象のエンタープライズ アプリケーションの "オブジェクト ID" をコピーします。

alt text

オブジェクト ID を指定して以下のように API を実行します。

GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants/?$filter=clientId eq '<エンタープライズ アプリケーションのオブジェクト ID>'

alt text

表示された oAuth2PermissionGrant リソースの id の値をコピーします。 複数のエントリが表示される場合は、Azure Portal の内容と比較して削除したいエントリを特定してください。

コピーした oAuth2PermissionGrant リソース ID を指定して、以下の API を実行します。

GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants/<oAuth2PermissionGrant リソース ID>

alt text

正しく API を実行できたら、メソッドを GET -> DELETE に変えて API を実行し削除を行います。

alt text

実行後、Azure Portal を確認して、アクセス許可に対するユーザーの同意が削除されていることを確認してください。

alt text

最後に、認証を実装したアプリケーションを実行し、再度、同意画面が表示されることを確認してください。

コメント (0)

コメントの投稿