2

我想使用相同的OAuth2令牌(在iOS的Swift 3应用程序中)访问Azure AD图形APIMicrosoft Graph API - 这可能吗?如何使用相同的OAuth2令牌访问Azure图形和Microsoft Graph?

我想访问以下API:

我已经创造了在Azure门户中本地应用和两个微软图形Microsoft.Azure添加权限。 ActiveDirectory(带有上述许可范围)

我只能通过访问两个API更改资源身份验证时(登录时) - Azure配置看起来正确。但是,如果在使用第一个资源进行身份验证时尝试使用相同的令牌访问其他API,则会出现“未经授权”错误。我试图将两个URL都添加到资源属性中,但随后出现错误(“AADSTS50001:在租户中找不到应用程序名称”)。我在做什么错,或者我错过了什么......?

如果这是不可能的 - 为什么可以在Azure门户中添加多个API?

原因访问这两个API:微软图形不给我的所有属性(但支持增量更改)和Azure的AD图给我的完整资料 - 既没有管理concent(使用委派权限)

+0

您在此处使用哪个工作流程(代码授予,隐式授予,客户端凭证等)?请注意,对于类代码授予,资源参数是可选的。 –

回答

2

您不能从字面上使用相同的访问令牌调用两个API。由于访问令牌具有特定的受众群体,因此其中一个API会在受众群体声明与其自己的应用ID URI不匹配时拒绝该令牌。

看起来你真正想要完成的是使用单一登录体验获取两个令牌,并且可以这样做。

使用授权码授权流程,您可以让用户登录,而无需指定资源。用户将获得AAD和MS Graph API权限的同意,并且当登录完成时,您的应用程序将获得验证码。此时,您的应用程序可以使用相同的授权码两次调用令牌端点以获得两个端点的两个令牌。从那里,您可以管理这两个令牌,并同时维护对这两个API的访问权限。

我在我的一个Python样本here中这样做,除了我的两个端点是AAD Graph API和Azure资源管理器。

+0

谢谢。我正在使用[p2.OAuth2](https://github.com/p2/OAuth2)框架 - 所以我必须弄清楚我是否必须创建自己的,改变它,或者它是否能够做到你描述。 –

相关问题