我正在尝试使用Microsoft Graph API来为Azure Active Directory配置/取消配置用户和组。我已在Microsoft App Registration Portal(https://apps.dev.microsoft.com)中注册了我的应用程序。我计划使用Java和REST开发Web应用程序。我很担心" GrantType"用于身份验证和获取accessToken。
我查看了Microsoft提供的文档(https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols)。我正在考虑使用ClientCredentials GrantType或AuthorizationCode GrantType,但看起来他们需要"用户干预"给予"管理员同意"。
我的问题是哪种授权类型可用于直接获取AccessToken而无需任何用户干预。
任何人都可以指导我这个。 非常感谢提前......
答案 0 :(得分:2)
客户端凭据流可用于在无需用户干预的情况下获取访问令牌。
这是守护进程'应用场景,我们在这里有一个示例
https://github.com/Azure-Samples/active-directory-dotnet-daemon-v2
请注意,此流程要求您的应用程序具有应用程序密钥,并且您要为要访问的API设置应用程序权限(与委派权限相对)。
通常,管理员仍然需要在第一次使用应用程序时进行身份验证和同意,但之后,应用程序应该能够自行执行。
答案 1 :(得分:1)
扩展Shawn Tabrizi的答案,如果需要,您还可以使用带有客户端凭据的证书而不是客户端密码。
还有资源所有者密码授权流程,它也需要客户端密钥,但也需要用户名和密码。有许多原因不使用此流程(无法启用MFA等)。但这是一种选择。
通常,请使用客户端凭据并为应用分配应用权限。正如肖恩所说,管理员必须同意,在没有用户干预的情况下这样做会要求您具有对其AAD的高访问权限(手动创建OAuth2PermissionGrants和AppRoleAssignments)。但要获得该访问权限,您需要获得同意:)