私は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"
は、誰もが私にいくつかの洞察力を与えることができますなぜ私はさまざまなユーザーのための異なる形式を得るだろうか?これらのユーザーは同じテナントに属しており、そのメールは同じドメインにあります。
ありがとう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
アプリケーションがこのデータを取得できるように設定されていることを確認する必要があります。 AADの他のAPIと同様に、Graph APIへのアクセス権を要求する必要があります。その場合、ユーザーはトークンが機能する前にこれらのアクセス許可に同意する必要があります。 AAD Graph APIに固有のトークンを使用する必要があります。そのトークンは、リソース要求 'https://graph.windows.net/' –