Qua*_*kly 0 azure-active-directory azure-ad-b2c azure-ad-msal
我有一个使用ADAL的客户端/服务器身份验证的工作版本.但是,当您想要使用本地帐户(即只是一个用户名或只是一个没有AAD之外的支持身份验证器的电子邮件地址)时,B2C AAD似乎无法与ADAL一起使用.我们应该为本地帐户使用的API似乎是MSAL的alpha版本.到现在为止还挺好.我能够使用Graph API创建本地用户并使用以下代码,我似乎正在验证本地用户'joeconsumer@mycompany.com':
this.pca = new PublicClientApplication("a4828eaa-42f6-418a-8062-f857130b69ce");
AuthenticationResult result = await this.pca.AcquireTokenAsync(
new string[] { "a4828eaa-42f6-418a-8062-f857130b69ce" },
string.Empty,
UiOptions.ForceLogin,
null,
null,
"https://login.microsoftonline.com/" + "darkbondpublic.onmicrosoft.com",
"B2C_1_sign-in");
Run Code Online (Sandbox Code Playgroud)
问题是我使用WCF中的自定义安全令牌机制将安全令牌从'result.Token'传递回服务器.过去使用ADAL的服务器上的代码似乎不再接受上述调用中的安全令牌:
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
Microsoft.IdentityModel.Tokens.SecurityToken securityToken = null;
ClaimsPrincipal claimsPrincipal = tokenHandler.ValidateToken(userName, this.GetTokenValidationParameters(MetadataAddress), out securityToken);
Thread.CurrentPrincipal = claimsPrincipal;
Run Code Online (Sandbox Code Playgroud)
错误消息是:
谁能告诉我这里发生了什么?我是否需要在服务器上使用不同的身份验证方法?
您为Azure AD B2C租户配置的元数据端点不正确.这是正确的供您参考:
https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration?p=B2C_1_Sign_In
Run Code Online (Sandbox Code Playgroud)
我们可以从新的Azure门户中找到特定策略的元数据,如下图所示.

并且在元数据中应该能够看到如下所示的键端点:
https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys?p={policy}
Run Code Online (Sandbox Code Playgroud)
我们可以找到孩子的钥匙,gfIKIH-yZ3phRHRyjnsHIqZMaePLGAELzPat0CNY4sA如下图所示:

| 归档时间: |
|
| 查看次数: |
1534 次 |
| 最近记录: |