我有一个以java为后端的动态web应用程序(SpringWebMVCJARS+RESTJARS),由一个身份验证servlet和一个控制器servlet控制,用于应用程序中的其他功能。它有java脚本和html作为前端。该项目有webcontent文件夹,其中包含rest-servlet.xml和web.xml以及其他前端文件。
现在我需要实现oauth2.0来替换身份验证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
设置回调url(这是我的应用程序的开发url)
设置pxed团队提供的授权url
设置pxed团队提供的令牌url
设置pxed团队提供的客户端id-app_客户端
设置pxed团队提供的客户端机密
单击“获取新访问令牌”
复制令牌并将此令牌粘贴到另一个长url的末尾
将post设置为最后一步url的http方法,并将授权类型更改为基本身份验证。
设置pxed团队提供的用户名和密码-app_validate&password
发送请求
接收到包含所有详细信息的json响应。
到目前为止,我在以下方面进行了探索,但失败了:
spring引导安全性(我无法实现这一点,因为我无法更改体系结构)
带有openid connect的nimbus oauth 2.0 sdk:https://connect2id.com/products/nimbus-oauth-openid-connect-sdk/examples/oauth/token-request
ApacheOLTU(已退役,但我仍然无法在对象中设置正确的详细信息):https://oltu.apache.org/apidocs/oauth2/reference/org/apache/oltu/oauth2/client/package-summary.html
我只需要在后端实现这段代码。请帮助我使用正确且安全的库来实现oauth2.0。另外,如果您熟悉nimbus oauth 2.0 sdk,能否帮助我在正确的类中设置步骤中的详细信息?
1条答案
按热度按时间l3zydbqr1#
一种选择是使用网关为您处理oauth舞蹈,然后您的应用程序只需要验证访问令牌(oauth术语中的“资源服务器”)。
该链接帖子使用SpringCloudGateway,但其他网关/代理的工作方式相同(本文还使用了一个servlet过滤器,您使用的框架可以简化它)。