Spring OAuth2 隐式流重定向 url

Spring OAuth2 implicit flow redirect url

在我的 Spring Boot/OAuth2 应用程序中,我正在尝试通过我自己的 OAuth2 服务器使用隐式流程登录用户 url:

http://example.com/api/oauth/authorize?response_type=token&client_id=example_client_id&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin

登录后,它将用户重定向到以下 url:

http://localhost:8080/login#access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoyOTcsInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsicmVh&token_type=bearer&expires_in=43199&scope=read%20write&user_id=297&jti=9d416117-0d08-4f4e-874d-3f31dbe7815f

用户被重定向到带有 # 符号而不是 ? 的 url 是正确的行为吗?我的意思是:

http://localhost:8080/login?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoyOTcsInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsicmVh&token_type=bearer&expires_in=43199&scope=read%20write&user_id=297&jti=9d416117-0d08-4f4e-874d-3f31dbe7815f

如果否 - 如何设置我的 Spring 应用程序 OAuth2 服务器以便将用户重定向到正确的 url?

行为正确。授权代码流要求将响应参数嵌入到重定向 URI 的 query 部分(RFC 6749,4.1.2. Authorization Response) while the implicit flow requires that response parameters be embedded in the fragment part (RFC 6749, 4.2.2. Access Token Response)。

OAuth 2.0 Multiple Response Type Encoding Practices has defined a new request parameter, <strong>response_mode</strong>. The parameter specifies where response parameters should be embedded. In the specification, <strong>query</strong>, <strong>fragment</strong> and <strong>none</strong> are defined. In addition, OAuth 2.0 Form Post Response Mode 已添加 <strong>form_post</strong> 作为值response_mode。如果授权请求中包含 response_mode=form_post,响应参数将作为 HTML 表单参数嵌入。

您可以在 Authlete 的“2. Response Format”中找到描述 response_type/response_mode 组合与 HTTP status/response 参数位置之间关系的 table权威指南。