5

Я внедрил oAuth2 с пружинной защитой, и он отлично работает для меня. Но теперь я хочу создать пользовательский токен из внешнего интерфейса вручную без пароля. Потому что у меня только имя пользователя.Необходимо создать токен oAuth2 вручную без пароля

Может ли кто-нибудь мне помочь.

+0

Что вы сделали до сих пор? Вы пытались сделать это самостоятельно? – aribeiro

+0

Обычный пользователь - это логин с именем пользователя/паролем, а токен oAuth2 создан успешно. Но мне нужно создать другой токен пользователя, используя бэкэнд без пароля. –

ответ

13

Получил ответ !!!

HashMap<String, String> authorizationParameters = new HashMap<String, String>(); 
    authorizationParameters.put("scope", "read"); 
    authorizationParameters.put("username", "user"); 
    authorizationParameters.put("client_id", "client_id"); 
    authorizationParameters.put("grant", "password"); 

    Set<GrantedAuthority> authorities = new HashSet<GrantedAuthority>(); 
    authorities.add(new SimpleGrantedAuthority("ROLE_USER")); 

    Set<String> responseType = new HashSet<String>(); 
    responseType.add("password"); 

    Set<String> scopes = new HashSet<String>(); 
    scopes.add("read"); 
    scopes.add("write"); 

    OAuth2Request authorizationRequest = new OAuth2Request(
      authorizationParameters, "Client_Id", 
      authorities, true,scopes, null, "", 
      responseType, null); 

    User userPrincipal = new User("user", "", true, true, true, true, authorities); 

    UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
      userPrincipal, null, authorities); 

    OAuth2Authentication authenticationRequest = new OAuth2Authentication(
      authorizationRequest, authenticationToken); 
    authenticationRequest.setAuthenticated(true); 

    OAuth2AccessToken accessToken = tokenService 
      .createAccessToken(authenticationRequest); 

accessToken - это токен, который вы хотите.

Thanks

+0

Удивительный, спасибо! –

+0

Большое спасибо @ ChristiaanJanssen. Также, пожалуйста, повысьте, если это ценно для вас. –

Смежные вопросы