3

Azure AD ベアラー認証を必要とする API があります。

public void ConfigureAuth(IAppBuilder app)
{
   app.UseWindowsAzureActiveDirectoryBearerAuthentication(
      new WindowsAzureActiveDirectoryBearerAuthenticationOptions
      {
         // ...
      });
}

その後、おそらく Graph API を使用して Azure AD にクエリを実行し、呼び出し元のユーザーのグループ情報を特定することはできますか? ここでの最終目標は、以下の (または類似の) API メソッド/コントローラーにロールベースのセキュリティを適用することです。

[PrincipalPermission(SecurityAction.Demand, Role = "Admin")]

さらに、ID 情報は実行中のスレッドにどのように適用されますか?

4

1 に答える 1

6

最近では、ロール クレームやグループ クレームを使用してこれを行うことができます。ベアラー認証で保護された Web API がある場合 (ここのサンプルのように)、アクセス トークンに Group クレームや Role クレームが含まれるように API を構成できます。

OWIN ミドルウェアは、JWT ベアラー トークンのクレームを読み取り、ClaimsIdentity適切なクレームをSystem.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler( source ) に入力します。

"groupMembershipClaims"グループ クレームを受信するように API を構成するには、アプリケーション マニフェストのプロパティを編集して、値を"All"or "SecurityGroups"(配布リストをそれぞれ含めるか除外するか)に設定する必要があります (このサンプルでは、​​グループ クレームを使用してロールベースのセキュリティを適用します)。[Authorize]タグを使用した Web アプリ。

ロール クレームを受信するように API を構成するには、マニフェストを編集して、このサンプル(リンクはまだアクティブではありません - 数日中に"appRoles"公開されます) に示すように、プロパティでアプリケーション ロールを定義する必要があります。同じ。アプリケーション ロールを定義したら、Azure ポータルまたは GraphAPI を介して、ユーザーとグループをそれらのロールに割り当てることができます。AAD によって発行されるクレームは typeであるため、RoleClaimType を次のように設定する必要があることに注意してください。"roles"

new WindowsAzureActiveDirectoryBearerAuthenticationOptions  
{  
   ...
   TokenValidationParameters = new TokenValidationParameters {  
       RoleClaimType = "roles",  
   },  
   ...  
}
于 2014-11-14T22:06:49.967 に答える