azure - 从 AddAzureADB2C 切换到 Microsoft.Identity.Web 时的身份验证链接是什么?

标签 azure azure-active-directory asp.net-core-webapi azure-ad-b2c microsoft-identity-web

我有一个 API,它在一个简单的手写 HTML 页面(没有 Razor 页面,没有 asp 页面,什么都没有)上有一个简单的“登录”链接。登录后,会存储 cookie,以便我可以使用 swagger UI 直接进行简单的 API 调用。这对于测试和开发非常有用。

它使用 Azure AD-B2C 进行身份验证。

我按照 MS 文档 here 中的说明进行操作,还有像 AzureADB2CDefaults obsolete, how do I replace it? 这样的问题。简而言之,我替换了这段代码:

.AddAzureADB2C(AzureADB2CDefaults.AuthenticationScheme, "AzureADB2COpenID", "AzureADB2CCookie", AzureADB2CDefaults.AuthenticationScheme, options =>
{
     StartupValidator.B2cConfiguration.Bind(options);
});

使用这个新代码:

services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
       .AddMicrosoftIdentityWebApp(options => {
           StartupValidator.B2cConfiguration.Bind(options);
});

它编译并运行良好,但我的登录链接(同样,它只是一个简单的硬编码 HTML 页面)指向:

<a href='/AzureADB2C/Account/SignIn/AzureADB2C'>Sign-in</a> |

导航到该链接将访问本地服务器(当您进行开发时为 localhost),然后中间件会发挥神奇作用,将 302 重定向到包含所有随机数值和填充的所有其他位和鲍勃的 URL .

所以我的问题是:使用新设置的新登录 URL 是什么?这只是一个仅用于开发和调试的纯 HTML 页面,因此我不想拉入所有 razor 页面或任何页面。这能实现吗?

2023 年美国东部时间 5 月 24 日星期三上午 10:39:14 更新:

在建议从默认的 asp .net core webapp 模板开始之后,我已经能够通过 1) 拉入 Microsoft.Identity.Web.UI 取得进展。 2) 调用services.AddRazorPages().AddMicrosoftIdentityUI();在设置期间。然后我可以点击 /MicrosoftIdentity/Account/SignIn登录(不记名 token 也不可用)。

这并不是一个真正的解决方案,因为它添加了所有 Razor 和 UI 依赖项,并显着增加了容器的大小。有没有什么方法可以在不添加所有 UI 内容的情况下做到这一点?

最佳答案

当我们有一个集成了Microsoft身份的asp.net core MVC应用程序(使用模板创建项目并选择身份验证)时,我们将在页面右上角有登录按钮。

enter image description here

其中将有 _LoginPartial.cshtml包含<a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a> .

所以也许/MicrosoftIdentity/Account/SignIn就是你想要的。

我这边有一个测试,当我在浏览器中点击这个请求时,它会重定向到 https://login.microsoftonline.com/tenant_id/oauth2/v2.0/authorize?client_id=xxx&redirect_uri=https://localhost:7245/signin-oidc&response_type=id_token&scope=openid%20profile&response_mode=form_post&nonce=xxx&client_info=1&x-client-brkrver=xx&x-client-SKU=ID_NETSTANDARD2_0&x-client-ver=6.15.1.0 。恐怕当你想使用它时,你可能已经对 client-id, redirect-url and so on 进行了正确的变量配置。 .

我在program.cs和appsettings.json中的内容是

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
                .AddMicrosoftIdentityWebApp(builder.Configuration)

"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "xxx",
    "TenantId": "xxx",
    "ClientId": "xx",
    "ClientSecret": "xxx",
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath ": "/signout-callback-oidc"
  },

关于azure - 从 AddAzureADB2C 切换到 Microsoft.Identity.Web 时的身份验证链接是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76318212/

相关文章:

azure - 尝试使用另一个 Azure 租户的 guest Azure AD 帐户通过 SSO 登录 Office 加载项

ASP.NET核心API : How to use MySQL

c# - 如何使用带有客户端证书的 (Microsoft.AspNetCore.TestHost)TestServer

c# - 在 Web api Controller 上调用方法时出错 - .Net Core 1.1/EF 1.1

azure - 将 Web 应用程序连接到 Vnet 中的 Azure SQL DB

azure - 我应该传输多少图片才能为人物添加脸部?

azure - 在 Azure Active Directory 中预授权应用程序 : hide scope from other applications

azure - 启动和停止 Azure 虚拟机

powershell - Azure CLI 能否获取租户中运行的所有资源的列表?

azure - 对于 Azure Active Directory 中的注册应用程序,Office 365 Exchange Online 权限不可见