Spring Security OAuth2 accessToken

Posted

技术标签:

【中文标题】Spring Security OAuth2 accessToken【英文标题】: 【发布时间】:2015-11-14 06:12:34 【问题描述】:

在我的 Spring Boot 应用程序中,我需要以编程方式创建一个新用户并从内部(此应用程序的一部分)OAuth2 授权服务器为他获取 OAuth2 访问/刷新令牌。

然后,我计划将这些 access/refresh tokens 发送到某个外部(客户端)应用程序,该应用程序将代表该用户与我的第一个应用程序进行交互。

是否可以在不提供密码的情况下以编程方式为此用户获取 OAuth2 访问/刷新令牌(在以编程方式创建此用户期间,我不想处理 password,只处理 username)。

【问题讨论】:

【参考方案1】:

可以,看看下面的代码

@Autowired
private TokenEndpoint tokenEndpoint;

public ResponseEntity<?> createToken(User user) 

        Principal principal = new UsernamePasswordAuthenticationToken(user.getUserName(), user.getPassword(), user.getAuthorities());

        HashMap<String, String> parameters = new HashMap<String, String>();
        parameters.put("client_id", "XXX");
        parameters.put("client_secret", "XXX");
        parameters.put("grant_type", "password");
        parameters.put("password", user.getPassword());
        parameters.put("scope", "XXX");
        parameters.put("username", user.getUserName());

        return tokenEndpoint.getAccessToken(principal, parameters);

但您违反了 OAuth2 规范。授权应由资源所有者执行。

【讨论】:

以上是关于Spring Security OAuth2 accessToken的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security 入门(1-3)Spring Security oauth2.0 指南

Spring Security Oauth2

Spring-Security OAuth2 设置 - 无法找到 oauth2 命名空间处理程序

Spring Security OAuth2 v5:NoSuchBeanDefinitionException:'org.springframework.security.oauth2.jwt.Jwt

针对授权标头的Spring Security OAuth2 CORS问题

OAuth2.0学习(4-1)Spring Security OAuth2.0 - 代码分析