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

Azure ad b2c 在自定义策略中获取Azure AD B2C应用程序客户端id,azure-ad-b2c,Azure Ad B2c,嗨,使用B2C应用程序的客户端id调用自定义策略 我如何在保险单中访问此信息,我以为这会硬编码到客户id声明中,但我不认为是这样 它只是作为aud声明的默认值返回,但我在自定义策略中没有看到这一点 谢谢好的,这有点麻烦,但我尝试了一个标准的UserJourneyContextProvider技术配置文件,但没有成功 因此,为了获得客户id作为声明,我做了以下操作 创建编排步骤 <OrchestrationStep Order="2" Type="ClaimsExchange">

嗨,使用B2C应用程序的客户端id调用自定义策略

我如何在保险单中访问此信息,我以为这会硬编码到客户id声明中,但我不认为是这样

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


谢谢

好的,这有点麻烦,但我尝试了一个标准的UserJourneyContextProvider技术配置文件,但没有成功

因此,为了获得客户id作为声明,我做了以下操作

创建编排步骤

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

然后创建一个RESTFUL技术概要文件,它将调用一个函数应用程序,该函数应用程序将OIDC与{OIDC:ClientID}一起传递

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

从OIDC获取ClientID
没有一个
--功能应用程序URL--
查询字符串
然后,最后创建一个函数应用程序,它接受来自查询字符串的客户端id,并以正确的格式返回它,以便B2C识别

Net系统; 使用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;
 }
公共静态异步任务运行(HttpRequestMessage req,
TraceWriter日志)
{
Info(“C#HTTP触发器函数处理了一个请求。”);
//解析查询参数
字符串client_id=req.GetQueryNameValuePairs()
.FirstOrDefault(q=>string.Compare(q.Key,“client_id”,true)==0)
价值
返回req.CreateResponse(
HttpStatusCode.OK,新响应内容
{
version=“1.0.0”,
状态=(int)HttpStatusCode.OK,
客户号=客户号
},
新的JsonMediaTypeFormatter(),“应用程序/json”);
}
类响应内容{
公共字符串版本;
公众地位;
公共字符串客户端id;
}

现在,您将把B2C应用程序客户端id作为索赔包中的索赔,这样您现在就可以使用它做您想做的事情了

嘿,看起来您可以使用{OIDC:ClientId}将索赔抓取到输入索赔中,需要进一步调查我是否可以保留此索赔任何人都知道存在的其他{variables}或者我可以在哪里找到完整的列表