2013-08-30 8 views
6

IセットアップとMVC 4アプリケーションを追加し、Azure ADサーバーに対して以下のように認証を追加しました。http://msdn.microsoft.com/en-us/library/windowsazure/dn151790.aspxMVC Azure AD認証でどのようにしてADからロールを取得できますか?

認証は期待通りに機能します。しかし、私はデフォルトでは何の役割も戻っていません。いくつかのADグループが作成されているはずですが、MVCの[Authorize]属性を使用してアプリケーションをロール制限するためにそれらを使用したいと思います。

私は実際にこれを理解し始めても良い場所を見つけることができません。誰でも私に概要を教えたり、良いチュートリアルを教えてくれますか?

私はAzureアカウントの管理者ではないことを言及する必要があります。そのため、管理者に設定が必要な場合はどうすればいいか教えてください。

答えて

9

最初に、Azure ADによって返されたトークンには現在、ロールまたはグループのクレームが含まれていないため、Graph APIから取得する必要があります。次に、グラフAPIによって返されるAzure ADの役割は、必ずしもISV/LoBアプリケーションでの使用を意図したものではありません。一般に、代わりに認証にセキュリティグループを使用する必要があります。認可を実行するには、Graph APIでcheckMemberGroupsまたはgetMemberGroups操作を使用する必要があります。これらの操作は、推移的で、この目的に有効です。

以下のリソースを順番にチェックアウトすると、あなたの質問に答えられると思います。あなたは、グラフへの認証を呼び出し、および承認を実行するためにグループ操作の結果を使用するようにアプリケーションを構成する方法を学びます:

6

ショーン回答は少し古くなっています。 Azure ADは、JWTトークン内にグループやロールを含めるように設定できるので、に組み込まれ、標準[Authorize(Roles = "yourRoleName")]属性が有効になります。

Hereは紹介記事です。これは基本的に次の2つのオプションがあり言う:

  1. 使用グループが主張 - あなたは(あなたが唯一のグループIDを取得するアプリマニフェストにgroupMembershipClaims値を変更すると、後でアプリケーションでは、あなたが何であるかのグループのユーザーに見てClaimsPrincipal.Current.FindFirst("groups").Valueをチェックすることができる必要があります)。これを使用する独自のAuthorize属性を記述することができます。more info

  2. あなたのアプリケーションのための役割を定義して、ユーザーがロールにある場合は、テストのために、通常のコードを使用します。

    [PrincipalPermission(SecurityAction.Demand, Role = “yourRoleName”)]

    [Authorize(Roles = “yourRoleName”)]

    if (ClaimsPrincipal.Current.IsInRole(“yourRoleName”)) { //do something }

    あなたはあなたの中に役割を編集する必要がありますアプリのマニフェスト 詳細情報hereおよびhereマニフェストに設定するために必要な値は、本当に不思議です何here

に記載されているあなたはAzureのWebページから、グループに複数の役割を割り当てることができないということです。これには紺碧のgraph apiを使用する必要があります。

AzureポータルでUsers and Groupsタブが表示されない場合は、おそらくAzure AD BasicまたはPremiumエディションが必要です。あなたが無料の紺碧の定期購読で働いているなら、free Azure AD Premium trialを使ってテストすることができます。

関連する問題