在自定义策略中获取 Azure AD B2C 应用程序客户端 ID

2023-12-01

您好,使用 B2C 应用程序的客户端 ID 调用自定义策略

我如何在策略中访问它,我认为这将被硬编码到 client_id 声明中,但我不认为它是

它仅作为 aud 声明的默认值返回,但我再次在自定义策略中没有看到这一点

Thanks


好吧,这需要解决一些问题,但我尝试使用标准的用户旅程上下文提供程序技术配置文件,但这不起作用

因此,为了获取客户端 ID 作为声明,我执行了以下操作

创建编排步骤

<OrchestrationStep Order="2" Type="ClaimsExchange">
  <ClaimsExchanges>
    <ClaimsExchange Id="ClientIdFromOIDC-JC" TechnicalProfileReferenceId="Get-ClientID-FromOIDC"/>
  </ClaimsExchanges>
</OrchestrationStep>

然后创建一个 RESTFUL 技术配置文件,它将调用一个函数应用程序,并通过 {OIDC:ClientID} 传递 OIDC

<TechnicalProfile Id="Get-ClientID-FromOIDC">
  <DisplayName>Get-ClientID-FromOIDC</DisplayName>
  <Protocol Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Name="Proprietary"/>
  <Metadata>
    <Item Key="AuthenticationType">None</Item>
    <Item Key="ServiceUrl">--FUNCTION APP URL--</Item>
    <Item Key="SendClaimsIn">QueryString</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="client_id" DefaultValue="{OIDC:ClientId}" PartnerClaimType="client_id"/>
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="client_id"/>
  </OutputClaims>
</TechnicalProfile>

最后创建一个函数应用程序,它接受查询字符串中的客户端 ID,并以正确的格式返回,以便 B2C 识别

using System.Net;
using System.Net.Http.Formatting;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");
    // parse query parameter
    string client_id = req.GetQueryNameValuePairs()
                       .FirstOrDefault(q => string.Compare(q.Key, "client_id", true) == 0)
                       .Value;

    return req.CreateResponse<ResponseContent>(HttpStatusCode.OK, new ResponseContent
    {
        version = "1.0.0",
        status = (int) HttpStatusCode.OK,
        client_id = client_id
    }, new JsonMediaTypeFormatter(), "application/json");
}

class ResponseContent {
    public string version;
    public int status;
    public string client_id;
}

您现在将获得 B2C 应用程序 client_id 作为索赔包中的索赔,以便您现在可以用它执行您想要的操作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在自定义策略中获取 Azure AD B2C 应用程序客户端 ID 的相关文章

  • Python:如何替换旧的上传到 Google Drive 的文件

    我用 python 编写了这个脚本 它查看文件夹 CSVtoGD 列出其中的每个 CSV 并将这些 CSV 作为独立的工作表发送到我的谷歌驱动器 我正在尝试编写一行 当我再次运行程序时 它将删除旧文件 我在这里缺少什么 我正在尝试通过使用以

随机推荐