diff --git a/src/main/java/me/zhyd/oauth/config/AuthConfig.java b/src/main/java/me/zhyd/oauth/config/AuthConfig.java index 43c2147dca38189443be26985100ee13fc0eb251..e65e94ce72747fa80be7434438975022c7010246 100644 --- a/src/main/java/me/zhyd/oauth/config/AuthConfig.java +++ b/src/main/java/me/zhyd/oauth/config/AuthConfig.java @@ -2,8 +2,8 @@ package me.zhyd.oauth.config; import com.xkcoding.http.config.HttpConfig; import lombok.*; -import me.zhyd.oauth.enums.scope.AuthScope; import me.zhyd.oauth.model.AuthCallback; +import me.zhyd.oauth.utils.StringUtils; import java.util.List; @@ -66,13 +66,17 @@ public class AuthConfig { private String agentId; /** - * 使用 Coding 登录时,需要传该值。 + * 域名前缀。 *

- * 团队域名前缀,比如以“ https://justauth.coding.net/ ”为例,{@code codingGroupName} = justauth + * 使用 Coding 登录和 Okta 登录时,需要传该值。 + *

+ * Coding 登录:团队域名前缀,比如以“ https://justauth.coding.net ”为例,{@code domainPrefix} = justauth + *

+ * Okta 登录:Okta 账号域名前缀,比如以“ https://justauth.okta.com ”为例,{@code domainPrefix} = justauth * - * @since 1.15.5 + * @since 1.16.0 */ - private String codingGroupName; + private String domainPrefix; /** * 针对国外服务可以单独设置代理 @@ -138,4 +142,26 @@ public class AuthConfig { * @since 1.15.9 */ private boolean pkce; + + /** + * Okta 授权服务器的 ID, 默认为 default。如果要使用自定义授权服务,此处传实际的授权服务器 ID(一个随机串) + *

+ * 创建自定义授权服务器,请参考: + *

+ * ① https://developer.okta.com/docs/concepts/auth-servers + *

+ * ② https://developer.okta.com/docs/guides/customize-authz-server + * + * @since 1.16.0 + */ + private String authServerId; + + /** + * 适配 builder 模式 set 值的情况 + * + * @return authServerId + */ + public String getAuthServerId() { + return StringUtils.isEmpty(authServerId) ? "default" : authServerId; + } } diff --git a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java index 03eb57aac9797315772251f082967452f56cd62b..85ff233ff36205dab778a43e7f3bf77f29ea5855 100644 --- a/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java +++ b/src/main/java/me/zhyd/oauth/request/AuthCodingRequest.java @@ -85,7 +85,7 @@ public class AuthCodingRequest extends AuthDefaultRequest { */ @Override public String authorize(String state) { - return UrlBuilder.fromBaseUrl(String.format(source.authorize(), config.getCodingGroupName())) + return UrlBuilder.fromBaseUrl(String.format(source.authorize(), config.getDomainPrefix())) .queryParam("response_type", "code") .queryParam("client_id", config.getClientId()) .queryParam("redirect_uri", config.getRedirectUri()) @@ -102,7 +102,7 @@ public class AuthCodingRequest extends AuthDefaultRequest { */ @Override public String accessTokenUrl(String code) { - return UrlBuilder.fromBaseUrl(String.format(source.accessToken(), config.getCodingGroupName())) + return UrlBuilder.fromBaseUrl(String.format(source.accessToken(), config.getDomainPrefix())) .queryParam("code", code) .queryParam("client_id", config.getClientId()) .queryParam("client_secret", config.getClientSecret()) @@ -119,7 +119,7 @@ public class AuthCodingRequest extends AuthDefaultRequest { */ @Override public String userInfoUrl(AuthToken authToken) { - return UrlBuilder.fromBaseUrl(String.format(source.userInfo(), config.getCodingGroupName())) + return UrlBuilder.fromBaseUrl(String.format(source.userInfo(), config.getDomainPrefix())) .queryParam("access_token", authToken.getAccessToken()) .build(); } diff --git a/src/main/java/me/zhyd/oauth/utils/AuthChecker.java b/src/main/java/me/zhyd/oauth/utils/AuthChecker.java index 13a292ac4a0216680d221ffd53e48af7251f5485..f00113d1260fbdadc2d84ebfb96e23210cdc6cb6 100644 --- a/src/main/java/me/zhyd/oauth/utils/AuthChecker.java +++ b/src/main/java/me/zhyd/oauth/utils/AuthChecker.java @@ -35,8 +35,8 @@ public class AuthChecker { if (isSupported && AuthDefaultSource.WECHAT_ENTERPRISE == source) { isSupported = StringUtils.isNotEmpty(config.getAgentId()); } - if (isSupported && AuthDefaultSource.CODING == source) { - isSupported = StringUtils.isNotEmpty(config.getCodingGroupName()); + if (isSupported && (AuthDefaultSource.CODING == source || AuthDefaultSource.OKTA == source)) { + isSupported = StringUtils.isNotEmpty(config.getDomainPrefix()); } if (isSupported && AuthDefaultSource.XMLY == source) { isSupported = StringUtils.isNotEmpty(config.getDeviceId()) && null != config.getClientOsType();