C# 健全性检查Microsoft Graph API并从Postman生成OAuth令牌

C# 健全性检查Microsoft Graph API并从Postman生成OAuth令牌,c#,azure,oauth,microsoft-graph-api,C#,Azure,Oauth,Microsoft Graph Api,我正在使用MicrosoftGraphAPI进行编码,并试图证明生成OAuth令牌的能力。我正在使用Postman,并将我的应用程序托管在Azure Active Directory上。在尝试传入正确的范围时,我在Postman中遇到问题-我正在尝试传入用户。请阅读,但是,Postman没有生成令牌 我的设置: 授权URL:{my_tenent}/oauth2/authorize 访问URL:{my_tenent}/oauth2/token 作用域:User.readAll 这些是生成OAuth

我正在使用
MicrosoftGraphAPI
进行编码,并试图证明生成OAuth令牌的能力。我正在使用Postman,并将我的应用程序托管在Azure Active Directory上。在尝试传入正确的
范围时,我在Postman中遇到问题-我正在尝试传入
用户。请阅读
,但是,Postman没有生成令牌

我的设置:

授权URL:{my_tenent}/oauth2/authorize

访问URL:{my_tenent}/oauth2/token

作用域:User.readAll


这些是生成OAuth令牌所要传递的正确值吗

是否确保将应用程序设置为请求对Microsoft Graph的权限

“其他应用程序的权限”部分。您必须静态选择希望应用程序调用Microsoft Graph的作用域,除非您使用的是支持动态许可的V2端点


让我知道这是否有帮助

是否确保将应用程序设置为请求对Microsoft Graph的权限

“其他应用程序的权限”部分。您必须静态选择希望应用程序调用Microsoft Graph的作用域,除非您使用的是支持动态许可的V2端点


让我知道这是否有帮助

我为同一个问题争论了将近一天,最后才找到答案。以下是适用于我的设置:

  • 令牌名称:[任何您想要的]
  • 验证Url:
  • 访问令牌URL:(虽然,我认为刷新不起作用)
  • 客户端ID:[您的应用程序的客户端ID]
  • 客户端密码:[您的应用程序的客户端密码]
  • 范围:我这里有很多范围,但它们似乎被忽略了。应在应用程序控制台中设置作用域
  • 授权类型:授权代码
  • 选中“本地请求访问令牌”

如果一切正常,当您单击“请求令牌”时,您应该会看到登录屏幕。

我为这个问题争论了将近一天,最后才找到答案。以下是适用于我的设置:

  • 令牌名称:[任何您想要的]
  • 验证Url:
  • 访问令牌URL:(虽然,我认为刷新不起作用)
  • 客户端ID:[您的应用程序的客户端ID]
  • 客户端密码:[您的应用程序的客户端密码]
  • 范围:我这里有很多范围,但它们似乎被忽略了。应在应用程序控制台中设置作用域
  • 授权类型:授权代码
  • 选中“本地请求访问令牌”

如果一切正常,当您单击“请求令牌”时,应该会出现登录屏幕。

听起来您在这里混合了一些v1和v2端点。我已经写了一篇文章,可能会对你有所帮助

v2身份验证的URI应为
https://login.microsoftonline.com/common/oauth2/v2.0/
而不是
https://login.windows.net/{my_tenent}/oauth2/authorize

当使用Graph请求作用域时,请确保使用完整URI,而不仅仅是作用域名称本身。例如,
user.read
应作为
https://graph.microsoft.com/user.read
。多个作用域以空格分隔,因此请求的
user.read
mail.read
将被格式化为
”https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read

如果您希望使用v1端点,则不请求将作用域作为OAUTH工作流的一部分。对于v1,当您注册应用程序时,作用域在Azure Active Directory中定义


如果您不确定要使用哪一个,请看一看。一般来说,我倾向于推荐v2,因为它最终将取代传统的v1实现。不过,还有一些较旧的API(EWS、SfB等)目前它只支持v1,因此在某些情况下您可以选择它。

听起来您在这里混合了一些v1和v2端点。我已经写了一个可能对您有所帮助的示例

v2身份验证的URI应为
https://login.microsoftonline.com/common/oauth2/v2.0/
而不是
https://login.windows.net/{my_tenent}/oauth2/authorize

使用Graph请求作用域时,请确保使用完整URI,而不仅仅是作用域名称本身。例如,
user.read
应作为
https://graph.microsoft.com/user.read
。多个作用域以空格分隔,因此请求的
用户。read
邮件。read
将被格式化为
”https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read

如果希望使用v1端点,则不请求将作用域作为OAUTH工作流的一部分。对于v1,当您注册应用程序时,作用域在Azure Active Directory中定义


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

忽略作用域的原因是您正在调用较旧的v1端点。作用域仅使用v2端点动态定义。忽略作用域的原因是您正在调用较旧的v1端点。作用域仅使用v2端点动态定义。