Spring Security Oauth2核心组件之ClientDetailsService

一、客户端

public interface ClientDetails extends Serializable {

	String getClientId();//客户端id
	
	Set<String> getResourceIds();//此客户端可以访问的资源。如果为空,则调用者可以忽略
	
	boolean isSecretRequired();//验证此客户端是否需要secret
	
	String getClientSecret();//获取客户端的secret
	
	boolean isScoped();//此客户端是否仅限于特定范围
	
	Set<String> getScope();//此客户端的范围。如果客户端未确定作用域,则为空
	
	Set<String> getAuthorizedGrantTypes();//此客户端被授权的授权类型
	
	Set<String> getRegisteredRedirectUri();//此客户端的预定义重定向redirect_url
	
	Collection<GrantedAuthority> getAuthorities();//权限集合
	
	Integer getAccessTokenValiditySeconds();//访问令牌有效期
	
	Integer getRefreshTokenValiditySeconds();//刷新令牌有效期
	
	boolean isAutoApprove(String scope);//测试客户端是否需要特定范围的用户批准
	
	Map<String, Object> getAdditionalInformation();//额外的信息

}

他只有一个子类BaseClientDetails

二、操作客户端

public interface ClientDetailsService {

  //通过clientId获取客户端详情信息
  ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException;

}

在这里插入图片描述

与 UserDetailsService 的注册方式类似, 需要在 AuthorizationServerConfigurationAdapter#configure(ClientDetailsServiceConfigurer clients) 中指定自定义的 ClientDetailsService:

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
    // @formatter:off
    clients.withClientDetails(clientDetailsService);
    // @formatter:on
}

你可能感兴趣的:(Spring,Security,Oauth2,spring,java,后端)