Web APIのAzure ADアプリケーションロールにユーザ権限を設定したいのですが、トークンの検証でロールが実際のクレームに変換されていません応答。Web APIのAzure認証 - 検証後にロールクレームが見つかりません
私はClaimsPrincipal.Current.Claimsリストではなく、プロパティ名役割なく主張スキーマhttp://schemas.microsoft.com/ws/2008/06/identity/claims/role下の役割を見ることができます。
私は「役割」にRoleClaimTypeを設定することで、役割を認識するための許可属性を取得するために管理しています。
しかし、Azureが役割を返すようにするにはどうすればいいですか。つまり、HasClaim(ClaimTypes.Role、 "AdminRole")がtrueを返します。
Controller.cs
[Authorize(Roles = "AdminRole")]
public IEnumerable<Item> Get()
{
var a = ClaimsPrincipal.Current.HasClaim(ClaimTypes.Role, "AdminRole"); // false
var b = User.IsInRole("AdminRole"); // true
}
Startup.cs
public void ConfigureAuth(IAppBuilder app)
{
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Tenant = ConfigurationManager.AppSettings[ "ida:Tenant" ],
TokenValidationParameters =
new TokenValidationParameters
{
ValidAudience = ConfigurationManager.AppSettings[ "ida:Audience" ],
RoleClaimType = "roles" // makes this work: User.IsInRole("AdminRole")
}
});
}
AzureのポータルのWeb APIとネイティブWPFクライアントを登録
- Webアプリケーションのマニフェストを修正し、いくつかの役割を組み込んでいます。 「Azure ポータル/アプリケーション登録/編集マニフェスト」
- Web Apiアプリケーションに少数のユーザーを追加/割り当て、 ロールを1つまたは別のロールに指定しました。 「Azureのポータル/エンタープライズアプリケーション/ [アプリケーション名] - ユーザーとグループ」ここまで読んですべての人のために
- 事前に感謝を!
ありがとう!なぜ、AADがもっと長いhttp://.../roleの代わりに役割を果たしているのか分かりますか? – MatiasK
申し訳ありませんが、なぜ私は分かりません。 –