1

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

然后,我打算将这些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规范。授权应由资源所有者执行。

相关问题