Spring OAuth2 - Manually creating an access token in the token store

后端 未结 7 939
天涯浪人
天涯浪人 2020-12-07 17:00

I have a situation where I would like to create an access token myself (so not through the usual process). I have come up with something like this:

@Inject
p         


        
7条回答
  •  暖寄归人
    2020-12-07 17:44

    This has worked for me:

    @Override public OAuth2AccessToken getToken(String username, String password) {
        HashMap parameters = new HashMap();
        parameters.put("client_id", clientid);
        parameters.put("grant_type", "password");
        parameters.put("password", username);
        parameters.put("scope", scope);
        parameters.put("username", password);
    
        AuthorizationRequest authorizationRequest = defaultOAuth2RequestFactory.createAuthorizationRequest(parameters);
        authorizationRequest.setApproved(true);
    
        OAuth2Request oauth2Request = defaultOAuth2RequestFactory.createOAuth2Request(authorizationRequest);
        // Create principal and auth token
        final UsernamePasswordAuthenticationToken loginToken = new UsernamePasswordAuthenticationToken(
                username, password);
        Authentication authentication = authenticationManager.authenticate(loginToken);
    
        OAuth2Authentication authenticationRequest = new OAuth2Authentication(oauth2Request, authentication);
        authenticationRequest.setAuthenticated(true);
    
        OAuth2AccessToken accessToken = tokenServices.createAccessToken(authenticationRequest);
    
        return accessToken;
    }
    

    In the Oauth2Configuration:

    @Bean
        DefaultOAuth2RequestFactory defaultOAuth2RequestFactory() {
        return new DefaultOAuth2RequestFactory(clientDetailsService);
    }
    

    The rest of the Oauth2Configuration should look like in the article:

    http://stytex.de/blog/2016/02/01/spring-cloud-security-with-oauth2/

提交回复
热议问题