Spring oauth2 - 授权服务和globalUserDetails之间的区别

时间:2016-10-29 01:02:43

标签: java spring spring-security oauth2

我试着理解oauth2的想法。我从本教程中学习: http://websystique.com/spring-security/secure-spring-rest-api-using-oauth2/

我理解

之间的主要区别是什么
@Autowired
public void globalUserDetails(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
    .withUser("bill").password("abc123").roles("ADMIN").and()
    .withUser("bob").password("abc123").roles("USER");
}

来自OAuth2SecurityConfiguration类

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {

    clients.inMemory()
        .withClient("my-trusted-client")
        .authorizedGrantTypes("password", "authorization_code", "refresh_token", "implicit")
        .authorities("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT")
        .scopes("read", "write", "trust")
        .secret("secret")
        .accessTokenValiditySeconds(120).//Access token is only valid for 2 minutes.
        refreshTokenValiditySeconds(600);//Refresh token is only valid for 10 minutes.
}

来自AuthorizationServerConfiguration类。

据我所知,第一个案例涉及我的应用程序的简单用户。 第二个案例涉及我的应用程序的授权?凭证之间有什么区别:

账单abc123和我信任的客户秘密?

我无法理解这个惯例,我将非常感谢它的解释;)我的信任客户端登录应用程序和她的用户帐单登录?令牌是为应用程序而不是为用户生成的?

提前谢谢你。

2 个答案:

答案 0 :(得分:0)

OAuth2SecurityConfiguration用于网络登录,通常应从您的数据库中读取;

AuthorizationServerConfiguration用于oauth客户端配置,此信息将在基本身份验证头中设置。

答案 1 :(得分:0)

您的身份验证涉及三方,

  1. 假设您构建了Facebook之类的OAuth服务器
  2. 您创建一个可以针对您的OAuth服务器授权的应用,例如购物清单应用
  3. 要访问购物清单应用的用户

配置OAuth服务器时,它应该能够授权用户以及购物清单应用

您在下面使用它来配置OAuth服务器如何授权客户端,

public void configure(ClientDetailsServiceConfigurer clients) throws Exception {

    clients.inMemory()
        .withClient("my-trusted-client")

...
}

一旦您的应用使用上述凭据进行了验证,OAuth服务器将要求用户通过发布登录页面(例如前Facebook登录)进行验证。

您将输入凭据,但是OAuth服务器需要在颁发授权代码之前对其进行验证,这些凭据就是您正在其中配置的凭据,

public void globalUserDetails(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
    .withUser("bill").password("abc123").roles("ADMIN").and()
    .withUser("bob").password("abc123").roles("USER");
}