我想通过Microsft Graph授权用户对抗AD组。只有AD组的成员才能访问API。执行此授权需要哪个Microsoft Graph查询(API URL)?或者还有其他选择吗?
感谢您为此提出最佳实践。
提前感谢您的建议和帮助。
最诚挚的问候, DEB
答案 0 :(得分:0)
如果API使用ASP.NET,您可以使用内置的OpenID连接功能,并在要保护的API控制器或方法上使用常规[Authorize]
属性。
该示例使用常规OpenID Connect身份验证,并使用JWT令牌声明来检索用户的组成员身份。如果组不能包含在JWT令牌中,则令牌将包含指向您可以检索它们的链接。这在样本的ClaimHelper.cs文件中处理。
要在JWT令牌中获取群组声明,请记住在示例的设置过程中遵循step 3,因为默认情况下它们不在那里。
您甚至可以将AAD中的组对象ID放入ASP.NET“角色”中,这样您就可以使用[Authorize]
属性,例如[Authorize(Roles="217ea9e4-0350-4a2d-b805-d71317fa0245")]
,其中GUID是其成员资格的组的objectID是必需的。
要实现最后一部分,您需要先将组声明添加到清单(上面引用的步骤3),然后将TokenValidationParameters
添加到您定义哪个声明类型将定义的OpenIdConnectAuthenticationOptions
角色(在Startup.Auth.cs中):
new OpenIdConnectAuthenticationOptions
{
// add this:
TokenValidationParameters = new TokenValidationParameters()
{
RoleClaimType = "groups"
},
// end added code
ClientId = ConfigHelper.ClientId,
后者可能不是最佳做法,因为您需要[Authorize]
属性中的组的objectID。