图1MyClientDetailsService示例及token获取?五、经过以上的步骤,我们就可以进行RESTful服务发布了,发布成功后,需要进行用户认证的试验。1、如图1MyClientDetailsService示例及token获取所示,我们使用REST Client工具对http://127.0.0.1:8088/restfulservice/oauth/token路径发出POST请求,其中需要在Request Parameters中添加client_id、client_secret、grant_type与user_name、password键值对。如此,即进行了模拟的通过用户名密码获取token的过程。图2中是client认证失败时的Response,我将client_secret更改后的结果。图3是user认证失败时的Response,我将password更改后的结果。图4是认证成功时的Response。可以看出,在认证成功时的Response中存在access_token字段,这就是我们获取到的token。
图2 client认证失败
图3 user认证失败
图4 认证成功2、我们在认证成功的条件下,使用上面步骤中返回的access_token对http://localhost:8088/restfulservice/abcs/6?access_token=a7f3e13e-cbb0-417d-a9f8-9764d11db00f进行GET请求,即可以成功得到返回结果,我是使用浏览器进行HTTP请求的。(具体的逻辑使用Spring MVC的Control完成,见我之前的博文:)。在调试时,可以看到每次请求,进入对应Controller后,代码均会转入UserDetails的String getUsername()方法中。?如果对请求路径里的access_token值稍作修改,如再对http://localhost:8088/restfulservice/abcs/6?access_token=a7f3e13e-cbb0-417d-a9f8-9764d11db008进行GET请求,则返回不到正确结果,如图5所示,即返回Invalid access token错误。
图5带正确的access_token值请求返回的结果
图6 带不正确的access_token值请求返回的结果如果删除access_token,不带access_token值对http://localhost:8088/restfulservice/abcs/6进行GET请求时,返回的错误信息如图7所示。
图7 不带access_token值请求返回的结果这就说明,我们的用户认证配置达到了预期效果。最近有各种之前没有碰到过的问题、技术,有时间整理好分享给大家。
来自王安琪新闻热点
疑难解答