Spring Security OAuth2 accessToken

时间:2015-08-20 14:29:26

标签: spring oauth spring-security spring-boot spring-security-oauth2

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

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

是否可以以编程方式为此用户获取OAuth2访问/刷新令牌而无需提供密码(在此用户的程序化创建过程中,我不想处理password,仅username)。

1 个答案:

答案 0 :(得分:2)

是的,你可以,看看下面的代码

@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规范。授权应由资源所有者执行。