Azure active directory Identity Server 3 AzureAd声称未返回

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并没有返回,但它是针对多租户应用程序的,所以我不太确定这是否相关 我肯定我遗漏了一些简单的东西,但在谷

我有一个可以工作的Identity Server应用程序,我正在将其设置为与Azure AD一起工作。我已经注册了Azure AD应用程序,可以正确地对其进行身份验证

查看并尝试执行类似于存储与用户关联的第三方用户ID的操作,但我没有从AAD获得
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连接支持的展位声明(请参阅)。