zoukankan      html  css  js  c++  java
  • spring security 5.x Provider

    Provider

    spring-security-config模块下
    org.springframework.security.config.oauth2.client.CommonOAuth2Provider.class 包括google、github等

    public enum CommonOAuth2Provider {
        GOOGLE {
            public Builder getBuilder(String registrationId) {
                Builder builder = this.getBuilder(registrationId, ClientAuthenticationMethod.BASIC, "{baseUrl}/{action}/oauth2/code/{registrationId}");
                builder.scope(new String[]{"openid", "profile", "email"});
                builder.authorizationUri("https://accounts.google.com/o/oauth2/v2/auth");
                builder.tokenUri("https://www.googleapis.com/oauth2/v4/token");
                builder.jwkSetUri("https://www.googleapis.com/oauth2/v3/certs");
                builder.userInfoUri("https://www.googleapis.com/oauth2/v3/userinfo");
                builder.userNameAttributeName("sub");
                builder.clientName("Google");
                return builder;
            }
        },
        GITHUB {
            public Builder getBuilder(String registrationId) {
                Builder builder = this.getBuilder(registrationId, ClientAuthenticationMethod.BASIC, "{baseUrl}/{action}/oauth2/code/{registrationId}");
                builder.scope(new String[]{"read:user"});
                builder.authorizationUri("https://github.com/login/oauth/authorize");
                builder.tokenUri("https://github.com/login/oauth/access_token");
                builder.userInfoUri("https://api.github.com/user");
                builder.userNameAttributeName("id");
                builder.clientName("GitHub");
                return builder;
            }
        },
        FACEBOOK {
            public Builder getBuilder(String registrationId) {
                Builder builder = this.getBuilder(registrationId, ClientAuthenticationMethod.POST, "{baseUrl}/{action}/oauth2/code/{registrationId}");
                builder.scope(new String[]{"public_profile", "email"});
                builder.authorizationUri("https://www.facebook.com/v2.8/dialog/oauth");
                builder.tokenUri("https://graph.facebook.com/v2.8/oauth/access_token");
                builder.userInfoUri("https://graph.facebook.com/me?fields=id,name,email");
                builder.userNameAttributeName("id");
                builder.clientName("Facebook");
                return builder;
            }
        },
        OKTA {
            public Builder getBuilder(String registrationId) {
                Builder builder = this.getBuilder(registrationId, ClientAuthenticationMethod.BASIC, "{baseUrl}/{action}/oauth2/code/{registrationId}");
                builder.scope(new String[]{"openid", "profile", "email"});
                builder.userNameAttributeName("sub");
                builder.clientName("Okta");
                return builder;
            }
        };
    
        private static final String DEFAULT_REDIRECT_URL = "{baseUrl}/{action}/oauth2/code/{registrationId}";
    
        private CommonOAuth2Provider() {
        }
    
        protected final Builder getBuilder(String registrationId, ClientAuthenticationMethod method, String redirectUri) {
            Builder builder = ClientRegistration.withRegistrationId(registrationId);
            builder.clientAuthenticationMethod(method);
            builder.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE);
            builder.redirectUriTemplate(redirectUri);
            return builder;
        }
    
        public abstract Builder getBuilder(String var1);
    }
    
    
    AuthorizationEndpoint

    spring-security-oauth2模块
    orgspringframeworksecurityoauth2providerendpoint包下定义了各种默认的处理器,即controller

    org.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint #授权逻辑
    org.springframework.security.oauth2.provider.endpoint.TokenEndpoint #获取令牌
    org.springframework.security.oauth2.provider.endpoint.CheckTokenEndpoint#checkToken #检查令牌
    org.springframework.security.oauth2.provider.endpoint.WhitelabelApprovalEndpoint #白名单
    
  • 相关阅读:
    Thinkphp回顾(五)之前台模板中的基本语法
    Thinkphp回顾之(四)查询方法深入学习
    Thinkphp框架回顾(三)之怎么实现平常的sql操作数据库
    Thinkphp学习回顾(二)之config.php的配置
    Thinkphp学习回顾(一)之基本结构目录
    端口
    curl put delete post get请求类型参数
    xshell连接virtualbox下的linux系统
    实现jsonp的三种方式
    匹配汉字
  • 原文地址:https://www.cnblogs.com/jinit/p/14194669.html
Copyright © 2011-2022 走看看