OpenID 连接成功的响应在重定向 uri 和访问令牌之间有 #

Posted

技术标签:

【中文标题】OpenID 连接成功的响应在重定向 uri 和访问令牌之间有 #【英文标题】:OpenID connect Successful response has # between redirect uri and access token 【发布时间】:2021-09-28 13:09:47 【问题描述】:

我已经使用 JWT 在 Azure 广告中为 Oauth 2.0 设置了一个应用程序,访问令牌已成功返回,但 URL 在重定向 URL 和 access_token 之间有一个井号 (#)。应用程序需要一个问号(?)来完成该符号,所以如果我将 # 替换为 ?在地址栏上签名过程完成。

有没有办法从 Azure 应用注册本身执行此操作,以便返回带有 ?代替 #?还是我应该以不同的方式发送请求?

下面是请求

https://login.microsoftonline.com/<tenant>/oauth2/v2.0/authorize?client_id=<client_id>&response_type=token&redirect_uri=<url_encoded_redirect_uri>&scope=<scope>&response_mode=fragment&state=12345&nonce=678910

【问题讨论】:

【参考方案1】:

在请求中,response_mode 必须是 form_post 而不是 Fragment。解决了这个问题

https://login.microsoftonline.com/<tenant>/oauth2/v2.0/authorize?client_id=<client_id>&response_type=token&redirect_uri=<url_encoded_redirect_uri>&scope=<scope>&response_mode=form_post&state=12345&nonce=678910

参考 - https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc#send-the-sign-in-request

【讨论】:

以上是关于OpenID 连接成功的响应在重定向 uri 和访问令牌之间有 #的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 以编程方式向 MVC 控制器验证 Azure Ad/OpenId 并获取重定向 uri

使用 java servlet 在重定向响应中丢失 HTTP 自定义标头

在 Azure AD B2C 中用作 OpenID IDP 提供程序时的 Okta 重定向 URI

在提交表单后但在重定向和退出之前回显成功消息

Chrome 在重定向时取消 CORS XHR

如何在重定向后通过wget下载文件名