使用javascript将Spring Oauth2实现与HTML前端集成

时间:2016-09-28 11:30:50

标签: html rest spring-mvc oauth-2.0 spring-oauth2

我正在实施spring oauth2来保护我的休息api。基本上我将rest api的使用限制在特定用户,而不是限制每个用户。

我已经实现了后端并使用spring oauth2保护了我的api。

我遵循以下步骤:
1)发送带有五个参数的GET请求。

本地主机:8080 / SpringRestSecurityOauth /的OAuth /令牌grant_type =密码&安培; CLIENT_ID = Awyi123nasdk89&安培; client_secret = asdj39m32 @#$ S&安培;用户名=的Rahul @ Gmail和安培;密码=的Rahul @ 9831
2)服务器在spring security的帮助下验证用户,并返回带有访问代码的json响应
{ “access_token”:“22cb0d50-5bb9-463d-8c4a-8ddd680f553f”,

“token_type”:“bearer”,
“refresh_token”:“7ac7940a-d29d-4a4c-9a47-25a2167c8c49”,
“expires_in”:119
}


3)我通过将此访问令牌作为参数传递来访问受保护资源,请求如下所示:

localhost:8080 / SpringRestSecurityOauth / api / users /?access_token = 8c191a0f-ebe8-42cb-bc18-8e80f2c4238e

4)如果令牌过期,则用户需要使用在步骤(2)中接受的刷新令牌来获得新令牌。到期后新的访问令牌请求看起来像这样:

localhost:8080 / SpringRestSecurityOauth / oauth / token?grant_type = refresh_token& client_id = restapp& client_secret = restapp& refresh_token = 7ac7940a-d29d-4a4c-9a47-25a2167c8c49

以上所有步骤都正常。现在我需要在我的客户端实现这一点。这样特定的客户端就可以访问此调用。我使用HTML / CSS作为客户端技术。

客户如何获取访问令牌?它应该存储在浏览器本地存储中吗?或者它应该在每次休息呼叫时生成?

任何例子都可以帮助我继续前进。

1 个答案:

答案 0 :(得分:0)

我正在像你一样实施我的项目。我使用angularjs并从响应json获取访问令牌,然后将其存储到cookie中。 此链接为您提供示例代码:http://www.baeldung.com/rest-api-spring-oauth2-angularjs。 (见前端 - 密码流)。

由于刷新令牌应该保密,客户端是html应用程序,因此您应该看到此链接http://www.baeldung.com/spring-security-oauth2-refresh-token-angular-js以处理刷新令牌。

对于html客户端,在访问令牌过期后使用刷新令牌获取访问令牌后,我使用http-auth-interceptor([http]://witoldsz.github.io/angular-http-auth/)重试所有由于访问令牌过期,休息请求失败。

很抱歉,我没有足够的声誉发布超过2个链接。