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