diff --git a/packages/core-api/src/apis/definitions/auth.ts b/packages/core-api/src/apis/definitions/auth.ts index 469414d3dc..1ff8c46dad 100644 --- a/packages/core-api/src/apis/definitions/auth.ts +++ b/packages/core-api/src/apis/definitions/auth.ts @@ -299,7 +299,11 @@ export const microsoftAuthApiRef = createApiRef< * Provides authentication for custom identity providers. */ export const oauth2ApiRef = createApiRef< - OAuthApi & OpenIdConnectApi & ProfileInfoApi & SessionStateApi + OAuthApi & + OpenIdConnectApi & + ProfileInfoApi & + SessionStateApi & + BackstageIdentityApi >({ id: 'core.auth.oauth2', description: 'Example of how to use oauth2 custom provider', diff --git a/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.ts b/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.ts index cf582b3a13..3f8ebce5ba 100644 --- a/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.ts +++ b/packages/core-api/src/apis/implementations/auth/oauth2/OAuth2.ts @@ -42,6 +42,7 @@ type CreateOptions = { environment?: string; provider?: AuthProvider & { id: string }; + defaultScopes?: string[]; }; export type OAuth2Response = { @@ -61,8 +62,6 @@ const DEFAULT_PROVIDER = { icon: OAuth2Icon, }; -const SCOPE_PREFIX = ''; - class OAuth2 implements OAuthApi, OpenIdConnectApi, ProfileInfoApi, SessionStateApi { static create({ @@ -70,6 +69,7 @@ class OAuth2 environment = 'development', provider = DEFAULT_PROVIDER, oauthRequestApi, + defaultScopes = [], }: CreateOptions) { const connector = new DefaultAuthConnector({ discoveryApi, @@ -93,11 +93,7 @@ class OAuth2 const sessionManager = new RefreshingAuthSessionManager({ connector, - defaultScopes: new Set([ - 'openid', - `${SCOPE_PREFIX}userinfo.email`, - `${SCOPE_PREFIX}userinfo.profile`, - ]), + defaultScopes: new Set(defaultScopes), sessionScopes: (session: OAuth2Session) => session.providerInfo.scopes, sessionShouldRefresh: (session: OAuth2Session) => { const expiresInSec =