如何通过自研IDP向Azure B2C自定义策略传递自定义声明?
解决方案:将自研IDP置于React与Azure B2C之间传递自定义声明
完全可以通过调整架构,让自研IDP作为React应用与Azure B2C之间的中间层,实现自定义声明的安全传递,具体实现方式如下:
调整登录发起逻辑
修改React应用的MSAL配置,将授权端点指向自研IDP,而非直接指向Azure B2C。当React应用检测到用户未登录时,发起的登录请求会先跳转至自研IDP。
自研IDP作为中间代理的核心流程
- 接收并存储参数:自研IDP接收React的登录请求,提取或从已维护的会话中取出需要传递的权限参数。
- 生成签名JWT:使用仅自研IDP与Azure B2C共享的密钥,生成包含权限参数的签名JWT令牌,将权限作为自定义声明嵌入其中。
- 重定向至B2C自定义策略:将用户重定向到Azure B2C的自定义策略端点,同时将生成的签名JWT作为
id_token_hint参数传递给B2C。
配置Azure B2C自定义策略
在已有的自定义策略中添加验证逻辑:
- 验证传入的
id_token_hint的签名有效性,确保令牌来自可信的自研IDP - 提取令牌中的权限声明,将其纳入用户的身份令牌生成流程,用于后续的权限授予
关键注意事项
- 密钥安全:自研IDP与B2C共享的签名密钥必须严格保密,仅在服务端维护,绝不能暴露给客户端应用。
- 重定向URI配置:在Azure B2C的应用注册中,添加自研IDP的回调地址作为允许的重定向URI;同时在React应用的MSAL配置中,将自研IDP的地址设置为授权端点。
内容的提问来源于stack exchange,提问作者Beuz
相关产品推荐
相关产品推荐

