如何在knpuniversity/oauth2-client-bundle中设置正确的Azure AD B2C Policy参数
解决Azure AD B2C Policy参数格式错误问题
1. 修正config.yml中的客户端配置
在knpu_oauth2_client的客户端配置里,需要明确指定azure客户端的options,添加policy参数,同时配置正确的B2C授权和令牌端点,避免库自动拼接错误路径:
knpu_oauth2_client: clients: azure_b2c: type: azure client_id: '%env(AZURE_B2C_CLIENT_ID)%' client_secret: '%env(AZURE_B2C_CLIENT_SECRET)%' redirect_route: azure_oauth_redirect redirect_params: {} options: tenant: '%env(AZURE_B2C_TENANT_NAME)%' policy: 'b2c_1_signupin' authorization_url: 'https://%env(AZURE_B2C_TENANT_NAME)%.b2clogin.com/%env(AZURE_B2C_TENANT_NAME)%.onmicrosoft.com/oauth2/v2.0/authorize' token_url: 'https://%env(AZURE_B2C_TENANT_NAME)%.b2clogin.com/%env(AZURE_B2C_TENANT_NAME)%.onmicrosoft.com/oauth2/v2.0/token'
2. 手动覆盖客户端实例的Policy参数
如果配置后问题仍存在,可在控制器中获取客户端实例时,显式设置policy参数:
$client = $this->get('knpu.oauth2.client.azure_b2c'); /** @var \TheNetworg\OAuth2\Client\Provider\Azure $provider */ $provider = $client->getOAuth2Provider(); $provider->policy = 'b2c_1_signupin'; // 生成授权URL $authUrl = $provider->getAuthorizationUrl();
3. 版本适配说明
你使用的thenetworg/oauth2-azure v1.4.2对B2C的支持需要显式指定policy和自定义端点,不能依赖库的自动生成逻辑,否则会错误地将租户路径拼接到policy参数中。务必使用b2clogin.com的专用端点,而非通用的login.microsoftonline.com。
内容的提问来源于stack exchange,提问作者DerAlteFritz
相关产品推荐
相关产品推荐

