AuthConfig.java 5.4 KB
Newer Older
智布道's avatar
智布道 已提交
1 2
package me.zhyd.oauth.config;

智布道's avatar
智布道 已提交
3
import com.xkcoding.http.config.HttpConfig;
4
import lombok.*;
5
import me.zhyd.oauth.model.AuthCallback;
6
import me.zhyd.oauth.utils.StringUtils;
7

8 9
import java.util.List;

智布道's avatar
智布道 已提交
10
/**
智布道's avatar
智布道 已提交
11 12
 * JustAuth配置类
 *
智布道's avatar
智布道 已提交
13 14 15
 * @author yadong.zhang (yadong.zhang0415(a)gmail.com)
 * @since 1.8
 */
16
@Getter
17
@Setter
18
@Builder
19 20
@NoArgsConstructor
@AllArgsConstructor
智布道's avatar
智布道 已提交
21
public class AuthConfig {
智布道's avatar
智布道 已提交
22 23

    /**
智布道's avatar
智布道 已提交
24
     * 客户端id:对应各平台的appKey
智布道's avatar
智布道 已提交
25
     */
26
    private String clientId;
智布道's avatar
智布道 已提交
27 28

    /**
智布道's avatar
智布道 已提交
29
     * 客户端Secret:对应各平台的appSecret
智布道's avatar
智布道 已提交
30
     */
31
    private String clientSecret;
智布道's avatar
智布道 已提交
32

智布道's avatar
智布道 已提交
33
    /**
智布道's avatar
智布道 已提交
34
     * 登录成功后的回调地址
智布道's avatar
智布道 已提交
35
     */
36
    private String redirectUri;
37 38 39

    /**
     * 支付宝公钥:当选择支付宝登录时,该值可用
智布道's avatar
智布道 已提交
40
     * 对应“RSA2(SHA256)密钥”中的“支付宝公钥”
41 42
     *
     * @deprecated 请使用AuthAlipayRequest的构造方法设置"alipayPublicKey"
43
     */
44
    @Deprecated
45
    private String alipayPublicKey;
46 47 48 49 50

    /**
     * 是否需要申请unionid,目前只针对qq登录
     * 注:qq授权登录时,获取unionid需要单独发送邮件申请权限。如果个人开发者账号中申请了该权限,可以将该值置为true,在获取openId时就会同步获取unionId
     * 参考链接:http://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D
51 52
     * <p>
     * 1.7.1版本新增参数
53 54
     */
    private boolean unionId;
55

H
Hongwei Peng 已提交
56 57 58
    /**
     * Stack Overflow Key
     * <p>
59 60
     *
     * @since 1.9.0
H
Hongwei Peng 已提交
61 62
     */
    private String stackOverflowKey;
63 64 65

    /**
     * 企业微信,授权方的网页应用ID
66 67
     *
     * @since 1.10.0
68 69
     */
    private String agentId;
智布道's avatar
智布道 已提交
70

Z
zheng-jx 已提交
71 72 73 74 75 76 77
    /**
     * 企业微信第三方授权用户类型,member|admin
     *
     * @since 1.10.0
     */
    private String usertype;

智布道's avatar
智布道 已提交
78
    /**
79
     * 域名前缀。
80
     * <p>
81 82 83 84 85
     * 使用 Coding 登录和 Okta 登录时,需要传该值。
     * <p>
     * Coding 登录:团队域名前缀,比如以“ https://justauth.coding.net ”为例,{@code domainPrefix} = justauth
     * <p>
     * Okta 登录:Okta 账号域名前缀,比如以“ https://justauth.okta.com ”为例,{@code domainPrefix} = justauth
智布道's avatar
智布道 已提交
86
     *
87
     * @since 1.16.0
智布道's avatar
智布道 已提交
88
     */
89
    private String domainPrefix;
智布道's avatar
智布道 已提交
90 91 92 93 94 95 96 97 98 99

    /**
     * 针对国外服务可以单独设置代理
     * HttpConfig config = new HttpConfig();
     * config.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080)));
     * config.setTimeout(15000);
     *
     * @since 1.15.5
     */
    private HttpConfig httpConfig;
100 101 102 103

    /**
     * 忽略校验 {@code state} 参数,默认不开启。当 {@code ignoreCheckState} 为 {@code true} 时,
     * {@link me.zhyd.oauth.request.AuthDefaultRequest#login(AuthCallback)} 将不会校验 {@code state} 的合法性。
104
     * <p>
105
     * 使用场景:当且仅当使用自实现 {@code state} 校验逻辑时开启
106
     * <p>
107 108 109 110 111 112
     * 以下场景使用方案仅作参考:
     * 1. 授权、登录为同端,并且全部使用 JustAuth 实现时,该值建议设为 {@code false};
     * 2. 授权和登录为不同端实现时,比如前端页面拼装 {@code authorizeUrl},并且前端自行对{@code state}进行校验,
     * 后端只负责使用{@code code}获取用户信息时,该值建议设为 {@code true};
     *
     * <strong>如非特殊需要,不建议开启这个配置</strong>
113
     * <p>
114
     * 该方案主要为了解决以下类似场景的问题:
115
     *
116
     * @see <a href="https://github.com/justauth/JustAuth/issues/83">https://github.com/justauth/JustAuth/issues/83</a>
117
     * @since 1.15.6
118 119
     */
    private boolean ignoreCheckState;
120 121 122 123 124 125

    /**
     * 支持自定义授权平台的 scope 内容
     *
     * @since 1.15.7
     */
126
    private List<String> scopes;
Z
zwzch 已提交
127 128 129 130 131 132 133 134 135

    /**
     * 设备ID, 设备唯一标识ID
     *
     * @since 1.15.8
     */
    private String deviceId;

    /**
智布道's avatar
智布道 已提交
136
     * 喜马拉雅:客户端操作系统类型,1-iOS系统,2-Android系统,3-Web
Z
zwzch 已提交
137
     *
智布道's avatar
智布道 已提交
138 139 140 141 142 143 144 145
     * @since 1.15.9
     */
    private Integer clientOsType;

    /**
     * 喜马拉雅:客户端包名,如果 {@link AuthConfig#clientOsType} 为1或2时必填。对Android客户端是包名,对IOS客户端是Bundle ID
     *
     * @since 1.15.9
Z
zwzch 已提交
146 147
     */
    private String packId;
智布道's avatar
智布道 已提交
148 149 150 151

    /**
     * 是否开启 PKCE 模式,该配置仅用于支持 PKCE 模式的平台,针对无服务应用,不推荐使用隐式授权,推荐使用 PKCE 模式
     *
智布道's avatar
智布道 已提交
152
     * @since 1.15.9
智布道's avatar
智布道 已提交
153 154
     */
    private boolean pkce;
155 156 157 158 159 160 161 162 163 164 165 166 167

    /**
     * Okta 授权服务器的 ID, 默认为 default。如果要使用自定义授权服务,此处传实际的授权服务器 ID(一个随机串)
     * <p>
     * 创建自定义授权服务器,请参考:
     * <p>
     * ① https://developer.okta.com/docs/concepts/auth-servers
     * <p>
     * ② https://developer.okta.com/docs/guides/customize-authz-server
     *
     * @since 1.16.0
     */
    private String authServerId;
168 169 170 171 172 173 174
    /**
     * 忽略校验 {@code redirectUri} 参数,默认不开启。当 {@code ignoreCheckRedirectUri} 为 {@code true} 时,
     * {@link me.zhyd.oauth.utils.AuthChecker#checkConfig(AuthConfig, AuthSource)} 将不会校验 {@code redirectUri} 的合法性。
     *
     * @since 1.16.1
     */
    private boolean ignoreCheckRedirectUri;
175 176 177 178 179 180 181 182 183

    /**
     * 适配 builder 模式 set 值的情况
     *
     * @return authServerId
     */
    public String getAuthServerId() {
        return StringUtils.isEmpty(authServerId) ? "default" : authServerId;
    }
智布道's avatar
智布道 已提交
184
}