spring-security Spring授权服务器OAuth2从我自己的登录页面登录

8wtpewkr  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(261)

我有一个带有登录表单的前端(Angular ),一个作为我的OAuth客户端的Angular 应用程序的后端(Spring依赖关系),然后我有第三个应用程序,即授权服务器,最后是资源服务器。
所以我想知道有没有办法从授权服务器跳转到重定向/登录?
我想用Angular 登录页面登录用户,然后用我的OAuth客户端(spring)获取授权代码流,然后,由于我没有经过身份验证,而不是获得重定向,我想得到一个错误“401”,然后用我的OAuth客户端(spring)再次向auth服务器发送一个发布请求,以登录先前在Angular 登录页面中发送数据的用户。
本质上,我只是想登录到我的认证服务器与自定义页面,存在于前端应用程序,让后端建立专门为该前端,接管流。

s2j5cfk0

s2j5cfk01#

您希望登录表单和Angular应用程序的其他部分无缝集成吗?在Angular(公共)客户端和授权服务器嵌入式(私有)客户端之间共享您的CSS,不要在公共客户端实现登录。
您可能需要更好地掌握OAuth2概念。
登录、注销和用户注册是授权服务器的事情。不要管它。原因与安全性有关,只是为了适应未来的需要:如果您想在您的系统中插入额外的客户端(例如移动的应用程序),该怎么办?您会一次又一次地实现登录、注销和用户注册吗?如果您必须在某个时候引入多因素身份验证,该怎么办?您会一次中断所有的客户端吗?
您的“后端”(使用OAuth2保护的Spring REST API)是资源服务器,而不是客户端。请确保it is configured as so:依赖于spring-boot-starter-oauth2-resource-server(直接或可传递地)。这是处理缺少(或无效)授权的HTTP状态的地方。处理的方式取决于您的资源服务器是servlet还是React式应用程序。repo linked just before中的libs默认情况下执行您想要的操作(401而不是302)。
在您的示例中,client是Angular应用程序。我希望您使用OAuth2客户端库(如angular-auth-oidc-client)来处理:

  • 授权代码流(重定向到授权服务器,从具有授权代码的授权服务器返回,并使用该授权代码检索令牌)
  • refresh-token流(访问令牌即将到期时自动刷新)
  • 请求授权(在配置的路由上添加带有access-token的Bearer Authorization报头)

我的Angular应用程序在登录时所做的只是将用户重定向到授权服务器的“授权”端点,然后等待重定向回带有授权码的“登录后URL”。如何获得授权码与他们无关(可以是登录表单、“记住我”cookie、一些生物统计学信息等)。
另外,我必须承认我没有使用Spring的授权服务器,我更喜欢成熟的/功能齐全的解决方案,比如Keycloak、Auth 0、Okta等,它们已经实现了更多的功能:多因素身份验证、与LDAP集成、面向“社交”提供商(Google、Facebook、Github等)的身份联合、管理UI...

相关问题