Skip to content

Commit 5ef8d6e

Browse files
committed
[#9564] fix(authn): Fix Flink connector oauth2 mode
1 parent 60de619 commit 5ef8d6e

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

docs/flink-connector/flink-authentication-with-gravitino.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ table.catalog-store.gravitino.gravitino.metalake: my_metalake
3939
table.catalog-store.gravitino.gravitino.client.auth.type: oauth2
4040
table.catalog-store.gravitino.gravitino.client.oauth2.serverUri: https://oauth-server.example.com
4141
table.catalog-store.gravitino.gravitino.client.oauth2.tokenPath: /oauth/token
42-
table.catalog-store.gravitino.gravitino.client.oauth2.credential: your-client-credentials
42+
table.catalog-store.gravitino.gravitino.client.oauth2.credential: client-id:client-secret
4343
table.catalog-store.gravitino.gravitino.client.oauth2.scope: your-scope
4444
```
4545

flink-connector/flink-runtime/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ shadowJarTask.configure {
7272
relocate("com.google", "org.apache.gravitino.shaded.com.google")
7373
relocate("google", "org.apache.gravitino.shaded.google")
7474
relocate("org.apache.hc", "org.apache.gravitino.shaded.org.apache.hc")
75+
relocate("org.apache.commons.lang3", "org.apache.gravitino.shaded.org.apache.commons.lang3")
7576
}
7677

7778
tasks.test {

flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/catalog/GravitinoCatalogManager.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@
2525
import java.util.Arrays;
2626
import java.util.Map;
2727
import java.util.Set;
28-
import org.apache.commons.lang3.StringUtils;
2928
import org.apache.gravitino.Catalog;
30-
import org.apache.gravitino.auth.AuthenticatorType;
3129
import org.apache.gravitino.client.DefaultOAuth2TokenProvider;
3230
import org.apache.gravitino.client.GravitinoAdminClient;
3331
import org.apache.gravitino.client.GravitinoMetalake;
@@ -66,7 +64,7 @@ private GravitinoCatalogManager(
6664

6765
// Only OAuth is explicitly configured; otherwise follow Flink security (Kerberos if enabled,
6866
// simple auth otherwise).
69-
if (AuthenticatorType.OAUTH.name().equalsIgnoreCase(authType)) {
67+
if (GravitinoCatalogStoreFactoryOptions.OAUTH2.equalsIgnoreCase(authType)) {
7068
this.gravitinoClient = buildOAuthClient(gravitinoUri, gravitinoClientConfig);
7169
} else {
7270
if (authType != null) {
@@ -247,14 +245,19 @@ private static GravitinoAdminClient buildOAuthClient(
247245
String credential = config.get(GravitinoCatalogStoreFactoryOptions.OAUTH2_CREDENTIAL);
248246
String path = config.get(GravitinoCatalogStoreFactoryOptions.OAUTH2_TOKEN_PATH);
249247
String scope = config.get(GravitinoCatalogStoreFactoryOptions.OAUTH2_SCOPE);
250-
Preconditions.checkArgument(
251-
StringUtils.isNoneBlank(serverUri, credential, path, scope),
252-
String.format(
253-
"OAuth2 authentication requires: %s, %s, %s, and %s",
248+
249+
// Remove OAuth config from client config map, Because
250+
// GravitinoAdminClient.builder().withClientConfig() does not recognize these keys.
251+
Set<String> oauthConfigKeys =
252+
Sets.newHashSet(
253+
GravitinoCatalogStoreFactoryOptions.AUTH_TYPE,
254254
GravitinoCatalogStoreFactoryOptions.OAUTH2_SERVER_URI,
255255
GravitinoCatalogStoreFactoryOptions.OAUTH2_CREDENTIAL,
256256
GravitinoCatalogStoreFactoryOptions.OAUTH2_TOKEN_PATH,
257-
GravitinoCatalogStoreFactoryOptions.OAUTH2_SCOPE));
257+
GravitinoCatalogStoreFactoryOptions.OAUTH2_SCOPE);
258+
for (String key : oauthConfigKeys) {
259+
config.remove(key);
260+
}
258261

259262
DefaultOAuth2TokenProvider provider =
260263
DefaultOAuth2TokenProvider.builder()

flink-connector/flink/src/main/java/org/apache/gravitino/flink/connector/store/GravitinoCatalogStoreFactoryOptions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ private GravitinoCatalogStoreFactoryOptions() {}
4848
.withDescription("The config of Gravitino client");
4949

5050
public static final String AUTH_TYPE = "gravitino.client.auth.type";
51+
public static final String OAUTH2 = "oauth2";
5152

5253
// OAuth2 config keys
5354
public static final String OAUTH2_SERVER_URI = "gravitino.client.oauth2.serverUri";

0 commit comments

Comments
 (0)