问题标签 [microsoft-identity-web]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
83 浏览

.net-core - 将应用程序 startup.cs 配置为在 .netcore 中同时使用 Azure AD 和 Azure B2C 的最佳方法是什么?我是身份提供商的新手

将应用程序 startup.cs 配置为在 .netcore 中同时使用 Azure AD 和 Azure B2C 的最佳方法是什么?我看到很多引用表明只使用 Azure B2C,但由于这种情况,我需要分别使用两个身份提供程序,让用户可以选择哪种服务。但我不确定如何去做,在配置启动后,我将如何在同一个控制器内的操作上使用不同的“授权”?

0 投票
1 回答
1537 浏览

c# - .Net Core 5 AddMicrosoftIdentityWebAppAuthentication,现在如何结合OpenId和Bearer?

从 .NET Core 3 移植到 .NET Core 5 身份验证,我需要用 services.AddMicrosoftIdentityWebAppAuthentication 或其他相关的 MicrosoftIdentity 扩展替换 services.AddSignIn(已弃用)。我需要支持 API 访问的 OpenId 用户登录和 Bearer 令牌策略。这些都与 services.AddSignIn 一起使用,但我无法让这种组合与新的 MicrosftIdentity 扩展一起使用。

我有一个使用 OpenId 登录到 Azure AD B2C 的 .Net Core Blazor 服务器。这可以正常工作:

但是当我直接在它之后添加承载令牌处理时,如下所示,它会覆盖 OpenId,因此只有承载 API 有效(反之亦然):

为了完整起见,其次是(在 .net core 3 中运行良好)

扩展方法的链接似乎不像 AddSignIn 那样工作。如何在新的 .net core 5 上下文中使这两项再次并行工作?ie OpenId 作为默认值,当 WebApi (/api) 被命中时使用 Bearer Tokens。

0 投票
1 回答
56 浏览

asp.net-core - 使用 Windows 身份验证以其他用户身份登录

我正在编写一个使用 Windows 身份验证的 Intranet 网络核心应用程序。要求管理员能够以其他用户身份登录,以测试特定用户的分配角色和权限以及对它们的依赖功能的操作。是否有可能实施这样的解决方案?插入 Microsoft Identity 并使用 signinmanager 会解决我的问题吗?

0 投票
1 回答
61 浏览

identityserver4 - 如何向 microsoft-identity-web 提供 login_hint

我将 microsoft-identity-web ( https://github.com/AzureAD/microsoft-identity-web ) 与 IdentityServer4 结合使用,以便使用 AAD 帐户通过 Identity server4 登录我的应用程序。一切正常。

我想知道是否可以向 microsoft-identity-web 提供 login_hint,以便可以预先填充 Microsoft 登录表单的名称字段。

0 投票
1 回答
461 浏览

azure-active-directory - 使用 Azure 进行 ASP.Net 5 身份验证 - 声明似乎已更改

简要地

OpenIdConnectDefaults.AuthenticationScheme使用Azure ADFS 进行身份验证时应该使用吗?

更详细

我有一个最近从 3.1 升级到 .NET 5 的 ASP.NET Core 应用程序。

以前,它一直在使用以下 NuGet 包:

以及我的以下内容StartUp.cs

今天,我更新了 NuGet 包:

并立即收到警告说我正在使用已弃用/过时的代码。

我被引导到Microsoft Identity网页以获取更多信息……似乎需要大量搜索才能找到我想要的东西。

虽然我确实读到 Visual Studio 预览版有一个更新的项目模板,所以我创建了一个新项目并将其连接到 Azure,并且我使用我的域凭据登录。极好的!

它使用的相关 NuGet 包似乎是:

所以,认证完成。现在进入授权......

所以我们有自己的本土授权服务。我们将用户的身份(来自 ADFS)发送到此,它返回他们被允许做的事情。这就是事情破裂的地方......

我们的原始代码使用了 Azure ADFS 响应中的“Upn”声明:

这将返回带有电子邮件地址的声明。

但是,这现在返回 null。

以下代码确实使用电子邮件地址获得了声明:

所以,我可以用这个运行,它会工作......

但是,我想知道 usingOpenIdConnectDefaults.AuthenticationScheme是否是最新 Microsoft Identity 和 Azure ADFS 的首选选项?我不得不使用魔术字符串“preferred_username”而不是ClaimTypes.Upn让我有些怀疑。

有没有人对此有深入的了解?

0 投票
0 回答
439 浏览

.net - Azure AD B2C 和 .Net Core 登录并静默更新访问令牌以进行 API 访问

问题 我有几个现有的 Web 应用程序,其中一些是静态服务的 React SPA 应用程序。我想提供一个登录服务,允许每个应用程序登录以获取访问 JWT 令牌,该令牌可用于与 .net 核心 API 通信,以检索特定于登录用户的 JSON 数据。

我不希望使用隐式流(根据 OAuth 2 安全最佳实践)。我也不想为每个应用程序维护登录解决方案的代码。

可能的解决方案: 我编写了一个 .Net Core 应用程序,Web 应用程序可以重定向到该应用程序进行登录。我已经设置了 Azure AD B2C(当前使用登录 UI 的用户流)。

我还需要提供一个(POST)端点,可以将过期的访问令牌交换为新的有效访问令牌(使用在用户在 90 天内处于活动状态时不会过期的刷新令牌)。

尝试 1 - Microsoft Identity Web: 我尝试使用 Microsoft Identity Web 库,但我看不到任何方法可以提供一个端点,Web 应用程序可以在该端点处从旧的请求新的访问令牌。

尝试 2 - MSAL: 我曾尝试使用 MSAL,但缺少用于使其与 .Net Core 一起使用的文档,而且我不太了解如何使用AcquireTokenSilent,因为它需要令牌缓存中的可用帐户应用程序,我不能只将旧的访问令牌传递给它。更糟糕的是,将 MSAL 与 .Net 框架 4.5 一起使用的旧教程需要隐式流程,而没有任何解释为什么它不使用授权代码。

尝试 3 - POST 到 b2clogin.com 授权和令牌端点: 这是我工作的唯一解决方案,这可能是我的场景的正确答案。

我遵循了以下文档:Azure Active Directory B2C 中的 OAuth 2.0 授权代码流

所以基本上要登录(不包括参数):

并获取访问/刷新令牌并使用刷新令牌更新访问令牌:

注意!如果您想知道 {policy} 应该是什么,它是 B2C 中登录用户流的名称。

访问令牌在 API 中没有过期 我现在唯一剩下的问题是,我在登录用户流程中设置的 5 分钟生命周期的访问令牌在 API 中没有过期。即使 expires_in 正确显示 300 秒,我也可以在过期后很长时间内继续使用它。

但是,一旦我重新启动 API,过期的访问令牌就会停止工作。一旦我了解发生了什么,我将为此发布一个单独的问题并更新/删除它。

0 投票
2 回答
933 浏览

c# - Azure Key Vault 中的应用设置配置部分

我正在使用新库在 Net5 API 上实现 AAD 身份验证Micorosft.Identity.Web该库公开了一个方法,该方法只接受一个IConfiguration带有如下所示部分的方法app.settings

Micorosft.Identity.WebStartup.cs 上的身份验证方法

app.settings.json

现在,问题是,我使用 Azure 来部署这个 API,当然所有这些敏感值都存储在 Key Vault 中。所以,我想找到一种方法:

同时,我找不到在 KeyVault 中创建这个“部分”的方法,所以我可以这样做

如果我在 Key Vault 上拥有所有值,我该如何存档这些选项之一,或者如何避免取决于 app.settings

编辑说明

我有 Key Vault 作为配置提供程序,但我不知道如何以 Section 方式返回这些值,因为这些方法是预期的

0 投票
2 回答
2300 浏览

azure - 如何在没有 appsettings 部分的情况下使用 AddMicrosoftIdentityWebApiAuthentication?

我正在 .NET 5 API 中实现 Azure Active Directory。我目前有这个 API 在 .NET Core 2.2 上完美运行。

这是旧的工作代码:

但是自从更新到 .NET 5 后,我收到了这个警告:

'AzureADAuthenticationBuilderExtensions.AddAzureADBearer(AuthenticationBuilder, Action)' 已过时:'这已过时,将在未来版本中删除。改用 Microsoft.Identity.Web 中的 AddMicrosoftWebApiAuthentication。请参阅 https://aka.ms/ms-identity-web。

所以我尝试将其更新为:

appsettings.json 中的“AzureAd”部分似乎是传递凭据的唯一方法。如何手动输入实例、域、ClientId 等?我不使用 appsettings.json,所有数据都是从 AzureKeyVault 手动检索的。

谢谢!

0 投票
2 回答
406 浏览

asp.net-core - ASP.NET Core Microsoft 标识注销“方案字段是必需的”。

我正在使用带有 Azure AD 身份验证的 ASP.NET Core 5。

我创建了一个新的模板 Web 应用程序,并使用 Azure AD 登录和注销,效果很好。

Startup.cs但是,当我将模板 Web 应用程序中的相关代码复制appsettings.json到另一个 Web 应用程序时,当我单击指向 /MicrosoftIdentity/Account/SignOut 的注销链接时,我会收到 400 错误响应

在 中Startup.cs,我添加了:

我比较了模板 Web 应用程序中有效的请求和其他无效的 Web 应用程序中的请求,我看不出与 /MicrosoftIdentity/Account/SignOut 的请求标头有任何区别。

对 /MicrosoftIdentity/Account/SignOut 的请求标头

我错过了什么“计划”?

0 投票
0 回答
385 浏览

.net-core - Microsoft Identity OIDC:受众“00000002-0000-0000-c000-000000000000”无效

相信我,我尝试了所有可能的选项,阅读了关于堆栈溢出的所有帖子,没有任何效果。

我正在使用带有 oauth2 的 swagger UI。当我点击执行时,总是得到相同的响应。

带有 401 的错误消息:www-authenticate: Bearer error="invalid_token"error_description="观众 '00000002-0000-0000-c000-000000000000' 无效"

请帮助我。

我可以使用身份验证流程成功登录swagger;生成令牌。

当我将该令牌粘贴到https://jwt.io时,

它向我显示了值为“00000002-0000-0000-c000-000000000000”的 aud。

请帮我弄清楚这个问题。我在 azure ad 端做错了什么,或者后端 api 端缺少什么。