小编Mar*_*yle的帖子

Spring security oauth2 - 从OAuth2主体获取自定义数据

我有一个使用Spring安全性的站点,并拥有用户(用户名和密码)和标准表单身份验证.我允许用户生成链接到其帐户的客户端ID和客户端密码,以便与OAuth2安全的rest API一起使用.

我为API使用单独的客户端ID和客户端密钥而不是用户名和密码,因此用户可以在不破坏API凭据,设置特定范围,禁用API访问等的情况下更改其密码等.

我使用spring-security-oauth2(提供程序)来保护其余的API,并且我已经允许客户端凭据流.我已经为api设置了客户端身份验证,以便检查客户端ID和密码.

在单独的应用程序中,我使用客户端ID和客户端密钥来检索访问令牌并开始将其与api一起使用.在大多数情况下,我使用简单的@PreAuthorize表达式,通常基于客户端角色和范围,这些表达似乎正常工作.

以上所有似乎都很好

但是......我现在有一些API端点,但是我需要根据底层用户的一些细节来实现一些更复杂的规则 - 在这种情况下是生成客户端ID和密码的用户.

作为一个简单的示例,考虑一个消息传递应用程序,其中我有一个端点,允许用户发布可能变化的特定类型的新"消息".我有一个允许每个用户和每种类型的收件人表,我想检查发布邮件的收件人是否与该类型的允许收件人匹配.(用户允许的收件人数据通常不大,很少更改,因此我很乐意在生成访问令牌时存储它的副本)

我在这些端点获得了主体,我发现它是OAuth2Authentication的一个实例,包含:

  • userAuthentication - null - 对于客户端凭据流,这似乎是可以预期的.
  • clientAuthentication已填充,authorizationParameters包含grant类型和client_id

我想我可以使用来自clientAuthentication.authorizationParameters的客户端ID来查找用户和我需要的详细信息,但是每次api调用都会有一些查询似乎没有意义.

我猜在Spring OAuth2库中有一个不错的地方/方式,在授予访问令牌的同时我可以添加一些额外的细节,以便以后我可以从OAuth2Authentication(主体)对象中获取它们(或者扩展它的东西?)

或者,是否有更好的方法完全解决这个问题?

谢谢!

java rest spring spring-security oauth-2.0

8
推荐指数
3
解决办法
2万
查看次数

Eclipse:WEBinf/lib上的Appengine SDK JAR

每次我更新Appengine SDK时,我都必须手动将Eclipse /插件中的一些JAR文件复制粘贴到WEB-INF/lib文件夹中.原因是我在Eclipse上遇到"丢失文件"错误,直到我这样做.

为什么Eclipse不在插件文件夹中查找JAR?有没有办法在构建路径上配置它?谢谢

eclipse gwt google-app-engine eclipse-plugin jar

3
推荐指数
1
解决办法
3156
查看次数