繁体   English   中英

Microsoft Graph API redirect_uri不允许查询字符串

[英]Microsoft Graph API redirect_uri doesn't allow query strings

我们正在尝试从旧的WindowsLive API迁移到新的Microsoft Graph API。 在此过程中,我们在应用程序中使用必需的OAuth 2.0 redirect_uri参数遇到了困难。

根据Oauth 2.0 RFCredirect_uri必须是绝对路径,但可以包含正确编码的查询字符串。

在Windows应用程序中,我们设置了绝对路径-它们的应用程序工具不允许添加查询字符串: https://example.com/index.php : https://example.com/index.php

我们发出的OAuth请求使用带有URL编码的redirect_uri ,包括查询参数。 这是必要的,我们使用的CMS(Joomla)需要知道应处理什么内容:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
 response_type=code&
 client_id={string}&    
 redirect_uri=https%3A%2F%2Fexample.com%2Findex.php%3Foption%3Dcom_jfbconnect%26task%3Dauthenticate.callback%26provider%3Dwindowslive&
 scope=user.read&
 state={string}&
 access_type=offline&
 approval_prompt=auto

但是,Graph API拒绝此操作:

“请求中指定的回复URL与为应用程序配置的回复URL不匹配”

还有其他人遇到这个问题或理解为什么Graph API在应用程序配置或令牌请求中都不接受查询参数吗?

编辑- 5/8 -但是,应用程序设置区不允许在REDIRECT_URI设置,根据RFC这是正确的查询字符串。 但是,Graph API不遵守RFC的以下说明:

The endpoint URI MAY include an "application/x-www-form-urlencoded" formatted (per Appendix B) query component ([RFC3986] Section 3.4), which MUST be retained when adding additional query parameters.

Microsoft Graph实际上并没有拒绝这种情况。 Microsoft Graph只是一个API,它不生成或管理访问令牌。 该过程由Azure Active Directory处理。

您收到的错误是由于未在https://apps.dev.microsoft.com的应用程序注册中配置redirect_uri引起的。 该URL必须明确匹配注册中配置的URL。 文档中

应用程序的redirect_uri ,您的应用程序可以在其中发送和接收身份验证响应。 它必须完全与您在门户中注册的重定向URI之一匹配 ,但必须经过url编码。

对于需要传递数据的方案,应该在state参数中对这些值进行编码。 这将与授权代码一起返回到您的重定向URI。

还要注意, access_type=offlineaccess_type=offline approval_prompt=auto都不是有效的查询参数:

  • 要检索refresh_token ,可以将offline添加到范围列表( user.read+offline )。
  • 要设置用户收到的提示类型,请使用prompt参数。 有效选项为loginnoneconsent

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM