Spring OAuth2自定义身份验证与外部重定向

时间:2017-04-05 09:59:19

标签: spring authentication spring-security oauth-2.0

我正在尝试在Spring中实现自定义身份验证机制。 我有一个认证机制,就像这样:

  • 用户访问我的页面http://mypage
  • 的任何子页面
  • 用户被重定向到http://mypage/login,因为我的WebSecurityConfigurerAdapter已配置,任何请求(/ login和/ redirect除外)都必须通过身份验证
  • 在“登录”页面上发生自定义登录机制,我在外部网站上对用户进行身份验证,将用户的浏览器重定向到外部页面,然后返回到我页面的另一个子页面:/ redirect with custom回复中的数据
  • 开启/重定向我设置了用户的Authentication,具体取决于自定义数据并添加了GrantedAuthority ROLE_FIRST
  • 完成此步骤后,用户将被重定向到子页面/主页,只有GrantedAuthority ROLE_FIRST的经过身份验证的用户才能看到该页面。
  • 如果用户点击/ home上的按钮,则会将GrantedAuthority ROLE_SECOND添加到用户的当前Authentication,并将用户重定向到/ secret
  • 然后用两个因素(外部登录,按钮点击)对用户进行身份验证,并且可以看到/ secret的内容,这需要使用GrantedAuthority ROLE_SECOND进行身份验证

到目前为止一切顺利,但我现在想要将用户重定向到他试图访问的初始URL。因此,如果用户在第一步中访问http://mypage/random,则应在最后一步中将用户重定向到/ random而不是/ secret。 问题是,我在外部登录步骤中丢失了URL,因为发生了外部重定向,我无法将URL传递给外部服务。

我该如何管理?

奖励问题:如果URL / random将是OAuth2令牌界面的URL,该怎么办?这会改变什么吗?

0 个答案:

没有答案