1

我做了什么

首先,我承认我缺乏春季安全知识。

我正在为我们的一种产品尝试安全的休息服务。我正在使用弹簧安全 OAuth2 JWT。我想允许匿名用户和注册用户访问我的资源。

假设我有一项服务http://localhost:8282/melayer/articles并且当我运行以下命令时

(1)。curl -X POST -vu melayer:12345 http://localhost:8282/melayer/oauth/token -H "接受: application/json" -d "password=melayer&username=melayer&grant_type=password&scope=write&client_secret=12345&client_id=melayer"

我能够接收 access_token、refresh_token 等。一切都很好,即使我可以使用接收到的 access_token 访问 url http://localhost:8282/melayer/ articles

(2)。curl http://localhost:8282/melayer/articles -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NjA3NzY5NDIsInVzZXJfbmFtZSI6ImVjb2tyeXB0IiwianRpIjoiNWI5ZmE4NjYtMTBlNS00NDA2LTgxYmMtYjM3NWVmNGE0ZmQ1IiwiY2xpZW50X2lkIjoiZWNva3J5cHQiLCJzY29wZSI6WyJ3cml0ZSJdfQ.4jO9euBz4TSSNh7M3l2YBD1QPblE0ZyOfGm4VtyFMFY"

我想了解的

我想匿名接收 access_token 即我不想传递用户名、密码或客户端密码,我想按以下方式运行 curl 命令

curl -X POST http://localhost:8282/melayer/oauth/token -H "接受:应用程序/json"

我担心的一个问题是,我想要使用或不使用用户凭据的 access_token 我从上周开始尝试实现这一目标,我错过了什么吗?可能吗 ?这样做的正确方法是什么?

这是一个很好的请求来帮助我:)

如果有人想查看我的代码,请参考 Git repo https://github.com/aniruddhha/spring-security-oauth2-jwt

4

1 回答 1

1

我认为您误解了访问令牌的概念,访问令牌旨在代表经过身份验证的用户使用。

OAuth2 支持不同的授权类型(密码、授权码等),请查看规范Oauth2 Spec

为了使用身份验证,您可以使用其中任何一种授权,也可以创建自己的授权(例如:使用 Google 令牌登录),但您必须发送某种形式的用户凭据来识别用户,并发送客户端凭据来识别客户端。

访问令牌不能用作某种用于访问公共 api 的 ApiKey

于 2016-04-20T04:08:04.773 回答