【发布时间】:2019-05-17 01:37:46
【问题描述】:
我正在阅读关于 OAuth 2.0 和 jwt 令牌的 article。有趣的部分是当作者描述client_secret时,他说:
在一个重要的实现中,客户端 ID 和密码将安全地存储在数据库中,并可通过客户端应用程序在部署期间访问的单独 API 进行检索。
现在假设我有一个 Angular 前端应用程序和一个带有 MySQL db 的 Spring 后端应用程序。
我的问题是作者所说的上述引用是什么意思。是那个吗
客户端(在这种情况下为前端应用程序)使用client_id 拨打电话
和secret(这里没有变化),但后端正在检查
提供“凭据”不是通过与存储在纯文本中的值进行比较(在
application.properties 在这种情况下),但是从收到的值和
与 db 中的哈希版本比较?
- 用户
john doe打开log in页面。提供凭据:username:john.doe和password:john1。点击sign in。 - Angular-frontend 拦截请求,并执行一个方法(例如
obtainTokenForUser())以便为用户获取一个短期有效的 jwt 令牌。因此,angular-app 向authorization server发送符合OAuth2.0的请求。在发送 contantAWS KMS以获取其client_id和secret以附加到请求之前。最后,从角度到身份验证服务器的请求如下所示:curl front-app-sp3:frnt4pP@<auth_server_ip_addr>:<auth_server_port>/oauth/token -d grant_type=password -d username=john.doe -d password=john1 -
Authorization server联系人AWS KMS收到client_id:front-app-sp3和client_secret:frnt4pP。它发现条目、密码匹配、验证正确。Auth server生成一个 JWT 令牌有效 f.e.5 minutes。令牌由服务器使用AS_pr1v4t3私钥签名。Authorization server向 Angular 应用返回一个令牌。 - 用户已登录。用户在主应用程序中请求资源(春季),因此 Angular 添加获得的令牌并将请求发送到“Main-web 应用程序”。
-
“主网络应用程序”中的
Resource server验证令牌。令牌正确有效。资源被退回。
【问题讨论】:
标签: oauth-2.0 spring-security-oauth2