You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并Azure AD B2C交互式流与ROPC流策略?求授权类型识别方法

问题

我有两个Azure AD B2C自定义策略,分别用于交互式流(如authorization_code流)和Resource Owner Password Credentials(ROPC)流获取令牌。我们在B2C之上封装了一层API作为代理,会根据请求中的grant_type将认证请求转发到对应的B2C策略。但现在遇到一个问题:刷新令牌必须使用获取令牌时的同一策略,可客户端不直接对接B2C,根本不知道该用哪个策略。

我尝试把ROPC策略和交互式策略合并成一个,但目前没法在策略里区分授权类型——B2C没有提供{OIDC:GrantType}或{OAUTH-KV:grant_type}这类声明解析器。想问下有没有办法在B2C策略中识别OAuth流的声明解析器?或者有没有其他合并交互式流与ROPC流的方法?

解决方案
  • 通过自定义声明传递grant_type
    在代理API转发请求到B2C时,额外添加一个自定义声明(比如custom_grant_type),把原请求的grant_type值传入。之后在B2C自定义策略里,用{OAUTH-KV:custom_grant_type}解析器获取该值,以此区分不同流,执行对应逻辑。

  • 利用请求参数间接判断流类型
    虽然没有直接的grant_type解析器,但可以通过请求中的特有参数判断:

    • ROPC流必然携带username和password参数,可通过检查{OAUTH-KV:username}是否存在来识别;
    • 交互式流(如authorization_code)会携带code参数,可通过{OAUTH-KV:code}是否存在来判断。
  • 代理层关联令牌与策略信息
    如果暂时无法合并策略,可在代理API层面做存储关联:

    • 客户端获取令牌时,代理API将返回的令牌与对应的策略ID绑定存储;
    • 客户端发起刷新请求时,代理API根据令牌查询到对应策略ID,再转发到正确的B2C策略完成刷新。

内容的提问来源于stack exchange,提问作者Anas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:25:35