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

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

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

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

【问题讨论】:

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


    【解决方案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 规范。授权应由资源所有者执行。

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 2019-09-25
      • 2019-04-29
      • 2017-09-11
      • 2019-04-28
      • 2016-07-12
      • 2017-01-18
      • 2012-12-19
      • 1970-01-01
      相关资源
      最近更新 更多