Azure active directory Identity Server 3 AzureAd声称未返回
我有一个可以工作的Identity Server应用程序,我正在将其设置为与Azure AD一起工作。我已经注册了Azure AD应用程序,可以正确地对其进行身份验证 查看并尝试执行类似于存储与用户关联的第三方用户ID的操作,但我没有从AAD获得Azure active directory Identity Server 3 AzureAd声称未返回,azure-active-directory,identityserver3,openid-connect,Azure Active Directory,Identityserver3,Openid Connect,我有一个可以工作的Identity Server应用程序,我正在将其设置为与Azure AD一起工作。我已经注册了Azure AD应用程序,可以正确地对其进行身份验证 查看并尝试执行类似于存储与用户关联的第三方用户ID的操作,但我没有从AAD获得sub或nameIdentifier声明 我需要向AzureAD索要这些吗他们的文档似乎在说“sub”索赔已经(或至少可以)返回:。这篇文章似乎说sub并没有返回,但它是针对多租户应用程序的,所以我不太确定这是否相关 我肯定我遗漏了一些简单的东西,但在谷
sub
或nameIdentifier
声明
我需要向AzureAD索要这些吗他们的文档似乎在说“sub”索赔已经(或至少可以)返回:。这篇文章似乎说sub并没有返回,但它是针对多租户应用程序的,所以我不太确定这是否相关
我肯定我遗漏了一些简单的东西,但在谷歌上找不到任何相关的东西
干杯,
Alex这篇文章太旧了,关于Azure AD发布的令牌中的令牌声明,这篇文章应该是正确的
根据测试,我可以从Azure AD获得sub
声明,它也是由IdentityServer 3发布的,如下图所示:
以下是我为IdentityServer3配置的代码,供您参考:
var webApp = WebApp.Start("https://localhost:44333", app =>
{
app.UseIdentityServer(new IdentityServerOptions
{
SiteName = "NDC Demo",
SigningCertificate = cert,
Factory = factory,
AuthenticationOptions = new AuthenticationOptions
{
IdentityProviders = ConfigureAdditionalIdentityProviders,
EnableAutoCallbackForFederatedSignout = true
}
});
});
public static void ConfigureAdditionalIdentityProviders(IAppBuilder app, string signInAsType)
{
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
AuthenticationType = "aad",
Caption = "Azure AD",
SignInAsAuthenticationType = signInAsType,
Authority = "https://login.microsoftonline.com/{tenantId}",
ClientId = "{clientIdFromAzurePortal}",
RedirectUri = "{redirectUri}",
});
}
如果您仍然有问题,请将请求分享给Azure AD,您可以使用Fiddler捕获它。谢谢@fie xue msft。我的小提琴手轨迹和你的一样。如何从AAD获取原始响应令牌?也许我需要包括一些特定的作用域来恢复它?您是否将主题声明作为IDS'AuthenticateExternalAsync方法的一部分返回?这个答案()说我应该看
oid
而不是sub
,但这个问题已经有一年了。正如文章中的代码一样,IdentityServer3使用开放ID连接协议与Azure AD交互。为了缩小这个问题是由Azure AD还是Identity Server3引起的,我建议您从此处解码Azure AD返回的id_令牌。据我所知,唯一的子是由开放id连接支持的展位声明(请参阅)。