c# - ASP.Net Azure OpenId 集成

标签 c# azure azure-active-directory

我正在尝试创建一个使用 Azure AD 进行 SSO 身份验证的项目。应用程序的 azure 部分已配置完毕,我能够使用以下代码获得 SAML 身份验证:

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());

app.UseWsFederationAuthentication(
    new WsFederationAuthenticationOptions
    {
        Wtrealm = realm,
        MetadataAddress = adfsMetadata
    });

以这种方式配置的网站对于网页来说可以正常工作,但我还需要能够从 native 客户端调用 API 调用。我想使用 JWT 对 native 应用程序进行身份验证,并找到了有关如何设置提供 JWT 的单独 native 应用程序的文档。我找到了有关使用添加连接服务向空白网站添加身份验证的说明 here它似乎将网站配置为使用 OpenId,并在我的 Startup.Auth.cs 文件中创建以下代码:

IdentityModelEventSource.ShowPII = true;

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    {
        ClientId = clientId,
        Authority = Authority,
        PostLogoutRedirectUri = postLogoutRedirectUri
    });

不幸的是,当我运行新配置的空白站点时,出现以下错误:

IDX10501: Signature validation failed. Unable to match keys: 'Vxa8HJ8gNB1XfxYnIDHBl2YuSFc', token: '{"typ":"JWT","alg":"RS256","x5t":"Vxa8HJ8gNB1XfxYnIDHBl2YuSFc","kid":"Vxa8HJ8gNB1XfxYnIDHBl2YuSFc"}.{"aud":"c13f71a0-e658-4432-a61e-24140f2b5890","iss":"https://sts.windows.net/8948afa6-51e3-4041-8303-5688ba9c8135/","iat":1542235664,"nbf":1542235664,"exp":1542239564,"aio":"ASQA2/8JAAAA6+NtWgTWs4mQi7gcoqDJMWDjmQtgxL79oC3U112+XjI=",...

我查看了我的应用的 OpenId 元数据, key Vxa8HJ8gNB1XfxYnIDHBl2YuSFc 不在其中。有什么简单的事情我错过了吗?

编辑

<小时/>

看起来配置的权限是

https://login.microsoftonline.com/{tenant}

最佳答案

我向 Microsoft 立案,他们的一位开发人员帮助发现问题出在 OpenId 和 Enterprise 应用程序上。当我创建非企业应用程序(Web/API)时,我能够使网站正确进行身份验证。我通过从头开始创建企业应用程序并比较 Web/API 应用程序和企业应用程序之间的浏览器行为来对此进行测试。该问题仅出现在企业应用程序中。我不确定有什么区别,但这是微软这边的。此外,它仅显示 OpenId。正如我上面提到的,我能够让它与 SAML 一起工作。我不清楚 Web/API 应用程序和企业应用程序之间的区别。

关于c# - ASP.Net Azure OpenId 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53310057/

相关文章:

c# - 如何自动增加表中的列?

c# - Resharper 测试运行程序抛出 TypeLoadException

c# - 为什么 Blazor 服务器端应用程序中返回的访问 token 为 null?

Azure : GroupsClient. BaseClient.Get():意外状态 403,带有 OData 错误:Authorization_RequestDenied:权限不足

azure-active-directory - iframe 中的 Azure AD MSAL

c# - 在Unity3D中无法接收来自PLC的C#UDP消息,但在Wireshark中可见

c# - 您如何使用可以是多种类型的变量?

node.js - 如何在特定阶段将数据从 azure cosmos db 备份到 azure blob?

Azure Synapse SQL 池未使用 OPENROWSET 识别 csv header

azure - 使用 Azure Powershell 脚本出现错误 "Changing property ' osDisk.name' is not allowed."