使用Angular oauth2 oidc库结合Keycloak时,能否通过idpHint指定身份提供商?
可以通过Angular oauth2 oidc库使用idpHint指定Keycloak身份提供商
虽然库的基础配置对象中没有直接暴露idpHint的专属字段,但可以通过两种方式传递该参数:
1. 登录时动态指定
调用OAuthService的login()方法时,传入包含idpHint的配置对象,该参数会被自动附加到Keycloak的授权请求URL中:
import { OAuthService } from 'angular-oauth2-oidc'; // 注入OAuthService后调用 this.oauthService.login({ idpHint: 'your-keycloak-idp-id' });
其中your-keycloak-idp-id是你在Keycloak控制台中配置的身份提供商ID(比如google、github或自定义的ID值)。
2. 全局默认配置
如果希望所有授权请求都默认使用某个身份提供商,可以在库的全局配置中通过customQueryParams添加全局参数:
import { OAuthModule } from 'angular-oauth2-oidc'; @NgModule({ imports: [ OAuthModule.forRoot({ oauthService: { issuer: 'https://your-keycloak-instance/auth/realms/your-realm', clientId: 'your-client-id', redirectUri: window.location.origin + '/auth-callback', scope: 'openid profile email', // 添加全局idp_hint参数 customQueryParams: { idp_hint: 'your-keycloak-idp-id' } } }) ] }) export class AppModule {}
验证方式:触发登录跳转后,查看浏览器地址栏的授权请求URL,会包含idp_hint=your-keycloak-idp-id参数,Keycloak识别后会直接导向对应的身份提供商登录页面。
内容的提问来源于stack exchange,提问作者Luka Randjelovic
相关产品推荐
相关产品推荐

