2017-10-17 19 views
0

Azure ADを使用するネイティブアプリケーションを構築しています。アプリケーションにはいくつかのアクセス許可が必要です(ユーザープロファイルの読み取り、Azure Service Management APIの実行など)。Azure Active Directoryの同意はキャッシュされていますか?

ユーザーが最初にアプリケーションを使用すると、サインインが求められ、サインインすると同意画面が表示されます(アプリケーションに同意する)。ユーザーが同意を得たら、Azure ADでアプリケーションを見ることができます(「アプリケーション」タブの下にあります)。ここまでは順調ですね。

このユーザーの現在の状況は、Azure ADからアプリケーションを手動で削除します(再び「アプリケーション」タブに移動します)。同意モデルの理解に基づいて、ユーザーがアプリケーションへの同意を削除したことを意味します。

このユーザーがアプリケーションにログインすると、最初のようにユーザーに再び同意画面が表示されることが予想されます。しかし、実際の動作では、ユーザーにそのような画面は表示されず、ユーザーは単にアプリケーションにサインインされます。さらに、ユーザーがAzure ADに戻ると、同意したアプリケーションのリストにそのアプリケーションが表示されません。

だから私の質問は以下のとおりです。

  1. のAzure ADは、何らかの形で同意をキャッシュしていますか?
  2. 同意がキャッシュされている場合、この同意がキャッシュされる期間は?
  3. 同意がキャッシュされている場合は、この同意をプログラムによって、または別の方法でクリアする手段がありますか?

なぜこのようなことが起こったのかについての洞察は高く評価されます。

+1

同意は、oauth2PermissionGrantオブジェクトのセットで与えられます。このオブジェクトは、oauth2Permission(アプリケーションで定義されています)をcustomerディレクトリのサービスプリンシパルに接続します。もちろん、同意したユーザーID (または管理者の同意があった場合はすべて)。あなたは、グラフエクスプローラでこれらのグラントの存在を確認し、ユーザーがアプリを削除した後に何が起こるかを見ることができます。 – juunas

+0

グラフエクスプローラの同意の確認に関する素晴らしい提案。ありがとう!同じことを行い、それに応じて質問を更新します。 –

答えて

1

Azure Active Directoryでは、ユーザー同意は、ユーザーオブジェクトとクライアントアプリケーションを表すサービスプリンシパルオブジェクトの間のリンクとして登録されます。何このユーザーが行うことの下に行くことによって、再び(その AzureのADから手動で我々のアプリケーションを削除している今

:このリンクはOAuth2PermissionGrant

としてAADグラフAPIで表現されて

あなたはこのことを言いました「アプリケーション」タブ)。同意モデルについての の理解に基づいて、これはユーザー が本アプリケーションへの同意を削除したことを意味します。

私は明確にしたい。知っているように、新しいAADアプリケーションを作成するときは、Application Object and a Service Principalの違いに留意する必要があります。

非常に具体的には、クライアントアプリケーションを表すサービスプリンシパルを削除すると、そのサービスプリンシパルに接続されているすべての同意リンクが破棄され、同意を効果的に削除します。問題が発生している可能性が高いアプリケーションオブジェクトだけを削除しても同じことは言えません。

私はhereを説明します。これは、Azure Active Directoryアプリケーションの同意を取り消すために必要な最も簡単な手順です。これが役に立ったら教えてください。

+0

ありがとうShawn。あなたのブログの投稿に記載されている「My Apps」ポータルを使って、このことを解決することができました。 1つの質問が残っています - 管理者は個々のユーザーのアプリケーションへの同意をどのように取り除くことができますか? –

+0

これをやりたいシナリオを説明できますか?別の単一のユーザーのためにこれを行うのは実際には意味がありません。 –

+0

大声で考えている - Azure ADの一部だが、サードパーティのアプリケーションにアクセスする必要がない(組織の別のチームに移動した)ユーザー。このようなシナリオは理にかなっていますか? –

関連する問題