我正在构建一个带有后端 api (asp.net core) 的 SPA (angular),两者都是构建的并且属于同一方。
我想使用 jwt 身份验证而不是基于 cookie 的身份验证,因为双方 - 后端和前端 spa - 属于同一方我正在考虑使用 OAuth 资源所有者密码授予流程将用户凭据暴露给网络应用应该没有任何问题。
在网络上搜索后,我看到很多不建议使用此流程的信息,但是如果 Web 客户端属于同一方的 api 并且我为什么要实现任何带有重定向到 auth 服务器的 OpenId Connect 流程授权服务器?
最佳答案
在您的案例中,问题不在于向客户端公开凭据,因为正如您所提到的,流程中的所有组件都由同一方控制。
然而,重定向也有一些优点,因为这样做可以将身份验证方法和手段与客户端本身分开。这使得例如:
- 在不影响客户的情况下更改身份验证机制或升级到多因素(或其他一些高级形式的)身份验证
- 跨不同网络应用程序的单点登录
- 精细的每个客户权限
- 无需更改用户密码即可轻松撤销访问权限
- 减少最终用户对他们可以信任哪些应用程序/客户端的凭据的困惑
关于authentication - 与我自己的水疗中心一起使用时,OAuth2 资源所有者密码凭证授予是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46082358/