背景
我关注了this tutorial,以便使用spring-security-oauth2配置OAuth2服务器。
到目前为止,它的工作原理如下:
SSCCE
我放置了这个准备好运行的示例on my github account(或多或少是本教程给出的代码)
克隆:
git clone https://github.com/ArnaudDenoyelle/sscce-spring-oauth2.git
执行:
mvn spring-boot:run
然后导航至:
http://localhost:9999/uaa/oauth/authorize?response_type=code&client_id=acme&redirect_uri=http://example.com
使用以下身份进行身份验证:
-user : user
-password : password
问题
现在,我想改变行为:
到目前为止,我可以通过以下步骤完成:
http://localhost:9999/uaa/oauth/authorize?response_type=code&client_id=acme&redirect_uri=http://example.com
http://localhost:9999/uaa/oauth/authorize
发送一个POST请求,其中包含默认spring确认表发送的相同正文参数:
可行:用户被重定向到我想要的页面(在这种情况下:http://example.com?code= $ authorization_code $)
问题
我想要的只是摆脱Spring的确认表。在我的情况下它没用:我只想获得当前会话的访问令牌,而不是永久授权客户端访问私有资源。有配置吗?
相关代码是:
@SpringBootApplication
public class AuthserverApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(AuthserverApplication.class, args);
}
@Configuration
@EnableAuthorizationServer
protected static class OAuth2Config extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("acme")
.secret("acmesecret")
.authorizedGrantTypes("authorization_code", "refresh_token", "password").scopes("openid");
}
}
}