私はユーザーのグループメンバーシップ(推移的)を取得し、そのためにMicrosoft Graphを使用しようとしています。私はトークンでグループクレームを使用していましたが、AD v2.0エンドポイント(動的同意サポートなど)に切り替えた後、トークンにはトークンが含まれていないため、ADから別々に取得する必要があります。getMemberGroupsの呼び出しが不十分な権限で失敗する
操作は全く同じですが、を使用するには苦労します。Directory.Read.All
のアクセス許可を与えないでください。ドキュメントには、これらのいずれかが動作する必要があることを述べている:
User.Read
とGroup.Read.All
User.ReadBasic.All
とオンbehalf-としかしGroup.Read.All
Directory.Read.All
Directory.ReadWrite.All
Directory.AccessAsUser.All
アクセストークンのマイクロソフトグラフへのユーザーのために、要求は常に応答403 Forbidden
とエラーコードで失敗しAuthorization_RequestDenied
私は実際に操作を実行するには、.NET SDKを使用していますが、とそれをREPROでき
POST /v1.0/me/getMemberGroups HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <removed>
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: dbb2ead3-9863-57ef-af09-d45c3ab88e69
{
"securityEnabledOnly": false
}
HTTPリクエスト純粋なHTTP要求です。これはより明確です。
アクセストークン内を見ると、これは十分な組み合わせであるGroup.Read.All
とUser.Read.All
の両方を持っています。
{
"aud": "https://graph.microsoft.com",
[....]
"scp": "Group.Read.All User.Read User.Read.All"
}
現在のユーザーは、私はこれは彼がどちらかのAD項目に以下の権限を持っていることの問題であってはならないと仮定し、当該ADテナントのグローバル管理者です。私はgetMemberGroups機能がUser.Read
(../me/getMemberGroups
用)の両方Group.Read.All
と、あなたのケースでのみ必要とすべきである(私の知る限り、この管理者ユーザーを使用している場合、それは問題ではすべきではないということ)v2.0のエンドポイントを使用して
が、私はこれは問題にすべきであると信じていませんが、_just CASE_に、getMemberGroups'は仕事/ '/v1.0/users/ {}のuserPrincipalName使用していますか?ドキュメントに '/ me'のリストがないので、ただ確認してください。 –
@MarcLaFleurいいえ、それも試してみました。また、 '/ v1.0/me/getMemberGroups'エンドポイントは' Directory.Read.All'パーミッションでうまく動作します。このエイリアスはその操作のページには記載されていませんが、[Usersのトップレベルのドキュメント](https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/)に記載されています。リソース/ユーザー)。 – htuomola