完整性检查Microsoft Graph API并从邮递员生成OAuth令牌

时间:2017-02-01 22:19:35

标签: c# azure oauth microsoft-graph

我正在对Microsoft Graph API进行编码,我正在尝试证明生成OAuth令牌的能力。我正在使用Postman并将我的应用程序托管在Azure Active Directory上。我试图传递正确的Scopes时遇到Postman中的一个问题 - 我试图传递User.read然而,Postman没有生成令牌。

我的设置:

验证网址:https://login.windows.net/ {my_tenent} / oauth2 / authorize

访问网址:https://login.windows.net/ {my_tenent} / oauth2 / token

范围:User.readAll

这些是否是传入的正确值以生成OAuth令牌?

3 个答案:

答案 0 :(得分:3)

您是否确定设置应用程序以请求Microsoft Graph的权限?

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-integrating-applications

"对其他应用程序的权限"部分。您必须静态选择希望应用程序调用Microsoft Graph的范围,除非您使用支持动态同意的V2端点。

请告诉我这是否有帮助!

答案 1 :(得分:3)

听起来你在这里混合了一些v1和v2端点。我已经写了Microsoft v2 Endpoint Primer,可能会帮到你。

使用v2进行身份验证的URI应为createStatus(e){ var formData = new FormData(e.target); formData.append('image', this.newStatus.image); formData.append('description', this.newStatus.description); axios.post('/api/statuses', formData).then(response => { console.log(response.data); }, response => { this.formErrors = response.data; }); }, 而不是https://login.microsoftonline.com/common/oauth2/v2.0/

使用Graph请求范围时,请确保使用完整的URI而不仅仅是范围名称本身。例如,https://login.windows.net/{my_tenent}/oauth2/authorize应该被请求为user.read。多个范围以空格分隔,因此请求https://graph.microsoft.com/user.readuser.read的格式为mail.read

如果您更喜欢使用v1端点,则不要将范围请求作为OAUTH工作流程的一部分。使用v1,在注册应用程序时,Azure Active Directory中会定义范围。

如果您不确定要使用哪个,请查看Deciding between the Azure AD and Azure AD v2.0 endpoints。一般来说,我倾向于推荐v2,因为它最终将取代传统的v1实现。然而,有一些较旧的API(EWS,SfB等)目前仅支持v1,因此有些情况下您可以选择。

答案 2 :(得分:2)

我在同样的问题上奋斗了将近一天,然后终于搞清楚了。这些设置对我有用:

如果一切正常,当您点击"请求令牌"

时,您应该会看到登录屏幕