您的位置:首页 > 编程语言 > Java开发

SpringSecurityOAuth2.0授权类型配置

2019-01-31 11:31 239 查看

SpringSecurityOAuth2.0授权类型配置

授权类型(Grant Type)

  OAuth2为我们提供了四种授权方式:密码模式(resource owner password credentials),授权码模式(authorization code),简化模式(implicit),客户端模式(client credentials)。
  配置一个授权服务,你需要考虑采用哪种种授权类型(Grant Type),不同的授权类型为客户端(Client)提供了不同的获取令牌(Token)方式,为了实现并确定这种授权,需要配置使用 ClientDetailsService 和 TokenService 来开启或者禁用这种授权机制。
  不管使用什么样的授权类型(Grant Type),每一个客户端(Client)都能够通过明确的配置以及权限来实现不同的授权访问机制。这也就是说,假如你提供了一个支持"client_credentials"的授权方式,并不意味着客户端就需要使用这种方式来获得授权。

配置授权类型

  授权是使用 AuthorizationEndpoint 这个端点来进行控制的,你能够使用 AuthorizationServerEndpointsConfigurer 这个对象的实例来进行配 ,默认是除了资源所有者密码(password)授权类型以外,支持其余所有标准授权类型的。
  配置该对象可以设置如下属性:

  • authenticationManager:认证管理器,当你选择了资源所有者密码(password)授权类型的时候,请设置这个属性注入一个 AuthenticationManager 对象。
  • userDetailsService:如果你设置了这个属性,说明你有一个自己的 UserDetailsService 接口的实现,或者你可以把这个东西设置到全局域上面去(例如 GlobalAuthenticationManagerConfigurer 这个配置对象)。当设置了这个属性之后, 刷新令牌(“refresh_token” )授权类型模式的流程中就会包含一个检查,用来确保这个账号是否仍然有效(是否被禁用)。
  • authorizationCodeServices:这个属性是用来设置授权码服务的(即 AuthorizationCodeServices 的实例对象),主要用于 “authorization_code” 授权码类型模式。
  • implicitGrantService:这个属性用于设置简化授权模式,用来管理简化授权模式的状态。
  • tokenGranter:当你设置了TokenGranter 接口实现,那么授权将会交由你来完全掌控,并且会忽略掉上面的这几个属性,这个属性一般是用作拓展用途的,即标准的四种授权模式已经满足不了你的需求的时候,才会考虑使用这个。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: