我有一个 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应用程序(使用模板创建项目并选择身份验证)时,我们将在页面右上角有登录按钮。
其中将有 _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/