要求されているアクセス許可へのユーザーの同意
Entra ID で認証を実装すると、認証時に同意画面が表示されるようになります。
これは、OAuth をベースとした Entra ID の同意のフレームワークにより実現されており、以下の記事にどのようなものなのかの概要の記載があります。
どのユーザーが同意を行ったかの確認は、[Azure Portal] - [エンタープライズ アプリケーション] から対象のアプリを選択し、[セキュリティ] - [アクセス許可] で確認できます。API の種類、クレーム(スコープ) 毎に、[許可元] 列の [合計 n 人のユーザー] リンクを選択することで、同意を行ったユーザーを確認できます。
アクセス許可へのユーザーの同意を削除
この同意画面ですが、一度同意を行うと同意画面が表示されなくなります。もちろん、これは正しい動作で問題はないのですが、アプリ開発時に同意画面を再現させてテストしたいと思ってもユーザー当たり一度しか表示されないので、複数ユーザーを用意してなんて考えると、手間がかかってしまいます。手間がかかるといって十分に同意画面を再現させた認証のテストを行わないと、本番環境で実行した際に、リダイレクト先の設定が誤っており、同意を行った際にエラーが画面が表示されてしまうなんてことも起こるかもしれません。
そこで、ユーザーの同意を削除したいと思ったのですが、以下のサイトに記載があるように、Azure Portal からではできないようです。
PowerShell, Microsoft Grah を使用すればできるようです。
Microsoft Graph Explorer によるユーザー同意の削除
今回は、Microsft Graph API を使用してユーザー同意の削除方法を説明したいと思います。
ツールとしては、Graph Explorer を使用します。Graph Explorer は、実際に API を実行し、実行結果を確認できる開発者ツールです。Postman の Microsft Graph API 特化版みたいなイメージです。
まず、以下にアクセスし、Graph Explorer を起動します。
右上のアイコンを選択し、アプリ登録をしたテナントのユーザーでサインインします。
ユーザーが複数のテナントに所属している場合、Graph Explorer では、テナント切り替えの UI がないようなので、以下のようにクエリパラメータで、テナント ID を指定して、テナントを切り替えできます。
https://developer.microsoft.com/graph/graph-explorer?tenant=<テナント ID>
このようにテナント ID を指定してもうまくいかないときは、ユーザーのアイコン内のメニューから、[Sign in with a different account] を選択して、再度サインインしてみてください。 私は、この方法で、指定したテナントにサインインできました。
まず、アプリケーションに付与された委任されたアクセス許可の一覧を取得してみます。
GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants
この時、以下のようなエラーが発生した場合は、エラーメッセージ通りアクセス許可 (Permission) を付与してやります。
[Modify permissions] を選択すると、API の実行に必要なアクセス許可 (Permission) が一覧されているので、[Consent] で許可をします。
正しく一覧を取得できれば、次に対象のアプリケーションを指定して API を実行します。 Azure Portal から、対象のエンタープライズ アプリケーションの "オブジェクト ID" をコピーします。
オブジェクト ID を指定して以下のように API を実行します。
GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants/?$filter=clientId eq '<エンタープライズ アプリケーションのオブジェクト ID>'
表示された oAuth2PermissionGrant リソースの id の値をコピーします。 複数のエントリが表示される場合は、Azure Portal の内容と比較して削除したいエントリを特定してください。
コピーした oAuth2PermissionGrant リソース ID を指定して、以下の API を実行します。
GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants/<oAuth2PermissionGrant リソース ID>
正しく API を実行できたら、メソッドを GET -> DELETE に変えて API を実行し削除を行います。
実行後、Azure Portal を確認して、アクセス許可に対するユーザーの同意が削除されていることを確認してください。
最後に、認証を実装したアプリケーションを実行し、再度、同意画面が表示されることを確認してください。
コメント (0)
コメントの投稿