如何将Xero身份提供商集成到Azure B2C?解决OIDC兼容问题
将Xero集成到Azure B2C的问题咨询
需求场景
- 目标:将Xero集成到Azure B2C,支持用户通过Xero账户认证访问SPA应用与REST API
- 登录限制:仅允许本地账户及预创建的Xero用户登录;Xero用户账户需在首次登录前通过C# Microsoft.Graph库创建,创建时的身份配置代码如下:
Identities = new List<ObjectIdentity> { new() { // Xero用户身份提供商配置 SignInType = "federated", Issuer = "https://identity.xero.com", IssuerAssignedId = "xero-userid" } }
已执行操作与错误现象
- 添加自定义身份提供商,使用
https://login.xero.com/identity/.well-known/openid-configuration作为元数据URL - 参照Xero授权码流程配置client_id、client_secret,设置
response_type=code,scopes为openid profile email - 启用登录流程后,用户在Xero端登录成功跳转回SPA时,虽能看到Xero返回的code传递至token端点,但最终重定向到redirect_uri时收到错误:
http://localhost:3000/#error=server_error&error_description=AADB2C%3a+An+exception+has+occurred.%0d%0aCorrelation+ID%3a+90657cd5-4025-4c55-aebf-ab5ee545fbd9%0d%0aTimestamp%3a+2023-08-09+17%3a58%3a26Z%0d%0a&state=eyJpZCI6ImY4NmVmYWNhLWZlNDYtNGMxZS05NmNkLTU1OTUzMmJlMWIzYiIsInRzIjoxNjkxNjAzOTAxLCJtZXRob2QiOiJyZWRpcmVjdEludGVyYWN0aW9uIn0%3d
核心问题定位
直接调用Xero的token端点可成功完成令牌交换,但Xero要求Azure B2C的代理请求(即https://<tenantid>.b2clogin.com/<tenantid>.onmicrosoft.com/oauth2/authresp向https://login.xero.com/identity/connect/token发起的请求)必须通过**Basic Base64(client_id:client_secret)**格式的Authentication头传递身份凭证,而非在请求体中携带client_id和client_secret。
咨询内容
- 如何将Xero作为身份提供商集成到Azure B2C?
- 该场景是否可通过Azure B2C的标准配置流程实现?
- 若必须使用自定义策略,针对Xero这种非标准OIDC实现,策略应如何配置?
内容的提问来源于stack exchange,提问作者user1013607
相关产品推荐
相关产品推荐

