如何解决如何将 Oauth2.0 合并到现有的 Java Spring Web MVC 和 REST 项目中?
我有一个动态 Web 应用程序,它以 Java 作为后端(spring web MVC jars + REST jars),由一个身份验证 Servlet 和一个用于应用程序中其他功能的控制器 servlet 控制。 它有 java 脚本和 html 作为前端。 该项目有 WebContent 文件夹,其中包含 rest-servlet.xml 和 web.xml 以及其他前端文件。
现在我需要实现 Oauth2.0 来替换 Authentication Servlet 中的 SSO。在下面的代码中,我应该使用来自 OAuth2.0 流程实现代码的 JSON 响应,而不是从标头中获取详细信息。
@Override
public void doGet(HttpServletRequest req,HttpServletResponse response) throws servletexception,IOException
{
String digest = req.getHeader("Authorization");//need to remove this
//Pull PXED headers
String id = req.getHeader("IAMUSERID"); //need to remove this
String firstName = req.getHeader("IAMUSERFirsTNAME"); //need to remove this
String lastName = req.getHeader("IAMUSERLASTNAME");//need to remove this
String groups = req.getHeader("IAMUSERGROUPMEMBERSHIP");//need to remove this
}
现在 PXED 团队为我提供了在 POSTMAN 中获取此 JSON 响应的步骤。他们提供的步骤:
- 设置授权类型为授权码设置授权类型为 Oauth2.0
- 设置回调网址(这是我应用的开发网址)
- 设置 PXED 团队提供的授权 URL
- 设置 PXED 团队提供的令牌 URL
- 设置 PXED 团队提供的客户端 ID - APP_client
- 设置 PXED 团队提供的客户端密钥
- 点击“获取新的访问令牌”
- 复制令牌并将此令牌粘贴到另一个长 URL 的末尾
- 将 POST 设置为最后一步 URL 的 HTTP 方法,并将授权类型更改为基本身份验证。
- 设置 PXED 团队提供的用户名和密码 - APP_validate 和密码
- 发送请求
- 收到包含所有详细信息的 JSON 响应。
到目前为止,我已经探索并失败了:
- Spring Boot Security(我无法实现这一点,因为我无法更改架构)
- 带有 OpenID Connect 的 Nimbus OAuth 2.0 SDK:https://connect2id.com/products/nimbus-oauth-openid-connect-sdk/examples/oauth/token-request
- Apache OLTU(已停用,但我仍然无法在对象中设置正确的详细信息):https://oltu.apache.org/apidocs/oauth2/reference/org/apache/oltu/oauth2/client/package-summary.html
我只需要在后端实现此代码。 请帮助我使用正确且安全的库来实现 OAuth2.0。 另外,如果您熟悉NIMBUS OAUTH 2.0 SDK,能否帮我在正确的类中设置步骤中的详细信息?
解决方法
一种选择是为您使用 gateway to handle the OAuth dance,然后您的应用程序只需要验证访问令牌(OAuth 术语中的“资源服务器”)。
该链接帖子使用 Spring Cloud Gateway,但其他网关/代理的工作方式相同。 (这篇文章还使用了一个 servlet 过滤器,可以通过您正在使用的框架进行简化)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。