2017-09-08 16 views
0

私はAAD経由でユーザーを認証するためにexpressとpassport-azure-adライブラリを使用してnode.jsアプリケーションを構築しました。ログインしているユーザーの認証コールバックにグループを戻したいので、アプリの一部にアクセス権を与える前に、正しいセキュリティグループに属していることを確認できます。Active Directoryはすべてのユーザーのグループを返しません

私は

「groupMembershipClaims」含めるために私のActive Directoryアプリケーション(クラリティ)のための私のマニフェストを編集した:これは私は除いてログイン持っていたすべてのユーザーのために非常にうまく機能している「すべて」

を1つ。通常、私は、このフォームのプロファイルオブジェクトで応答を得る:

accessToken: "scrubbedAccessToken" 
aio: "scrubbedAio" 
amr: "["pwd"]" 
family_name: "My Last Name" 
given_name: "My First Name" 
groups: Array[1] 
    0: "[...hugeListofGuids...]" 
    length: 1 
in_corp: "true" 
ipaddr: "my ip" 
name: "My Name" 
oid: "scrubbedOid" 
onprem_sid: "scrubbedSid" 
sub: "scrubbedSub" 
tid: "scrubbedTid" 
unique_name: "[email protected]" 
upn: "[email protected]" 
ver: "1.0" 

しかし、私のユーザーの一人私のアプリではなく、これを取得するためのいくつかの理由のために:へと

_claim_names: "{"groups":"src1"}" 
_claim_sources: "{"src1":{"endpoint":"https://graph.windows.net/scrubbedTid/users/scrubbedOid/getMemberObjects"}}" 
accessToken: "scrubbedAccessToken" 
aio: "scrubbedAio" 
amr: "["pwd"]" 
family_name: "scrubbedLastName" 
given_name: "scrubbedFirstName" 
in_corp: "true" 
ipaddr: "scrubbedIp" 
name: "scrubbedFulleName" 
oid: "scrubbedOid" 
onprem_sid: "scrubbedSid" 
sub: "scrubbedSub" 
tid: "scrubbedTid" 
unique_name: "scrubbedEmail" 
upn: "scrubbedEmail" 
ver: "1.0" 

は、誰もが私にいくつかの洞察力を与えることができますなぜ私はさまざまなユーザーのための異なる形式を得るだろうか?これらのユーザーは同じテナントに属しており、そのメールは同じドメインにあります。

答えて

0

アクセストークンで返されるグループメンバーシップクレームの数は、トークンの種類に基づいて制限されます。

このブログの記事を見てみましょう:Azure Active Directory, now with Group Claims and Application Roles!

トークンのサイズは、HTTPヘッダーのサイズ制限を超えていない、 AzureのADは、グループ 請求にそれが含まれていることをobjectIdsとの数を制限していることを確認するには。ユーザーが超過制限よりも多くのグループのメンバー(SAMLトークンの場合は150 、JWTトークンの場合は200)のメンバーである場合、Azure ADはトークン内の グループクレームを発行しません。代わりに、 にグラフAPIを照会してユーザーのグループメンバーシップを取得するようにアプリケーションに指示するトークンがオーバーレイクレームを含みます。

このユーザーがあまりにも多くのグループのメンバーであることを意味する動作に気付きました。その詳細を取得するには、AAD Graph APIを呼び出す必要があります。

+0

ありがとうShawn。私はこの状況で人々のためのグループ情報を取得するためにAAD Graph APIを呼び出そうとしてきましたが、私はいくつかの問題を抱えています。私は、私の超過クレームソースからURLを呼び出そうとしていました https://graph.windows.net/.../users/.../getMemberObjects?api-version=1.5私が受け取ったトークンを使ってベアラ認可としてソースを主張しますが、私はAuthentication_MissingOrMalformedを取得します。また、nodeUp passport-azure-ad認証メソッドを使ってresourceURL: 'https://graph.windows.net'のトークンを取得しようとしましたが、そのトークンも正しくないようです。思考? – samart

+0

アプリケーションがこのデータを取得できるように設定されていることを確認する必要があります。 AADの他のAPIと同様に、Graph APIへのアクセス権を要求する必要があります。その場合、ユーザーはトークンが機能する前にこれらのアクセス許可に同意する必要があります。 AAD Graph APIに固有のトークンを使用する必要があります。そのトークンは、リソース要求 'https://graph.windows.net/' –

関連する問題