如何解决在同一应用程序中通过Spring安全性支持多个grant_type
在Spring Security中,应用程序是否可以容易地配置为使用两种不同的 grant_type ?
我们的Java BE应用程序将通过Angular FE应用程序供2种不同类型的用户使用。用户类型定义为请求标头:
- 员工:必须使用 authorization_code 进行身份验证。
- Internet上的一般用户:他们通过 client_credentials 进行身份验证。
我们设法在application.properties中定义了它:
#employee user
spring.security.oauth2.client.registration.employee.authorization-grant-type=authorization_code
spring.security.oauth2.client.provider.employee.authorization-uri=https://saml.company.com/oauth/authorize
spring.security.oauth2.client.registration.employee.redirect-uri=https://appDomain.com/appContext/login/oauth2/code/employee
spring.security.oauth2.client.provider.employee.token-uri=https://saml.company.com/oauth/token
spring.security.oauth2.client.registration.employee.scope=theScope
spring.security.oauth2.client.registration.employee.client-id=CLIENT_ID1
spring.security.oauth2.client.registration.employee.client-secret=SECRET
#general user
spring.security.oauth2.client.registration.direct.authorization-grant-type=client_credentials
spring.security.oauth2.client.provider.direct.token-uri=https://saml.company.com/oauth/token
spring.security.oauth2.client.registration.direct.client-id=CLIENT_ID2
spring.security.oauth2.client.registration.direct.client-secret=SECRET
与此相关的主要问题是,两种用户类型(员工和普通用户)的未声明的调用都被重定向到标准的Spring / login页面,该页面显示2个HTML锚链接,指向2个不同的flow / grant_type。
所需的行为是:
- 让员工用户直接重定向到 spring.security.oauth2.client.provider.employee.authorization-uri ,以便根据 authorization_code 流。
- 对于一般用户,BE应该处理 client_credentials 流,因为没有用户交互。
我们尝试使用过滤器来避免/ login重定向无效。有什么想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。