将 AddMicrosoftIdentityWebApp 与 IdentityServer4 结合使用是否幸运?
Any luck in using AddMicrosoftIdentityWebApp in combination with IdentityServer4?
我正在尝试将 Microsoft 配置为 Identityserver4 中的外部登录提供程序。
我通过使用 AddMicrosoftAccount
:
遵循身份服务器的文档成功
services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
microsoftOptions.ClientId = configuration["MicrosoftLoginProvider:ClientId"];
microsoftOptions.ClientSecret = configuration["MicrosoftLoginProvider:ClientSecret"];
});
但是,我没有成功地使用单点注销。该文档与 https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-5.0.
处的 Microsoft 文档一致
但是,如果您按照说明在 Microsoft Developer Portal (portal.azure.com) 中创建应用程序,则该门户网站上的示例代码建议使用不同的方法。门户网站为我生成的示例应用程序 (WebApp-OpenIDConnect-DotNet) 使用的是 AddMicrosoftIdentityWebApp
:
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
由于此应用程序开箱即用,包括单点退出,我想知道这是否是我必须继续的方式。
然而,令我惊讶的是,我找不到任何关于如何将这种方法集成到 IdentityServer4 中的 doc/blogs。我自己几乎可以正常工作了,但是有一些奇怪的问题。
有人可以澄清使用 AddMicrosoftIdentityWebApp
是否是将 Microsoft 作为外部身份提供商添加到 Identityserver4 的方法吗?
有人成功让 AddMicrosoftIdentityWebApp
与 IdentityServer4 一起工作吗?
感谢您的帮助!
四处挖掘后,我发现了这条语句 here:
Microsoft.Identity.Web 是在 ASP.NET 核心网络应用程序和网络 API 中使用 Azure AD 的一种更简单的方法。
它不会以任何方式替换 ASP.NET Identity,它不会替换 AddJwtBearer 或 AddCookie 或任何较低级别的基元,但它确实为 Azure AD 使用和配置它们。
它不适用于非 Azure 身份提供者。它取代了 .NET 5.0
中已过时的 AzureAD.UI 和 AzureADB2C.UI
因此,结论是 Microsoft.Identity.Web 在 Azure AD 之外不起作用,因此不适用于 IdentityServer。
如果你真的成功了,请告诉我!
我想出了如何让它发挥作用。
实际上,我只需要做两件事。
首先,我必须在 Microsoft 生成的示例代码中删除对 AddAuthentication
的调用中的 OpenIdConnectDefaults.AuthenticationScheme
。所以代码变成:
services.AddAuthentication()
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
然后,在从临时 cookie 读取外部身份的代码中,我不得不使用 CookieAuthenticationDefaults.AuthenticationScheme。因此,该代码现在如下所示:
var authenticationResult = await HttpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme);
就这些了。
我正在尝试将 Microsoft 配置为 Identityserver4 中的外部登录提供程序。
我通过使用 AddMicrosoftAccount
:
services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
microsoftOptions.ClientId = configuration["MicrosoftLoginProvider:ClientId"];
microsoftOptions.ClientSecret = configuration["MicrosoftLoginProvider:ClientSecret"];
});
但是,我没有成功地使用单点注销。该文档与 https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-5.0.
处的 Microsoft 文档一致但是,如果您按照说明在 Microsoft Developer Portal (portal.azure.com) 中创建应用程序,则该门户网站上的示例代码建议使用不同的方法。门户网站为我生成的示例应用程序 (WebApp-OpenIDConnect-DotNet) 使用的是 AddMicrosoftIdentityWebApp
:
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
由于此应用程序开箱即用,包括单点退出,我想知道这是否是我必须继续的方式。
然而,令我惊讶的是,我找不到任何关于如何将这种方法集成到 IdentityServer4 中的 doc/blogs。我自己几乎可以正常工作了,但是有一些奇怪的问题。
有人可以澄清使用 AddMicrosoftIdentityWebApp
是否是将 Microsoft 作为外部身份提供商添加到 Identityserver4 的方法吗?
有人成功让 AddMicrosoftIdentityWebApp
与 IdentityServer4 一起工作吗?
感谢您的帮助!
四处挖掘后,我发现了这条语句 here:
Microsoft.Identity.Web 是在 ASP.NET 核心网络应用程序和网络 API 中使用 Azure AD 的一种更简单的方法。
它不会以任何方式替换 ASP.NET Identity,它不会替换 AddJwtBearer 或 AddCookie 或任何较低级别的基元,但它确实为 Azure AD 使用和配置它们。
它不适用于非 Azure 身份提供者。它取代了 .NET 5.0
中已过时的 AzureAD.UI 和 AzureADB2C.UI因此,结论是 Microsoft.Identity.Web 在 Azure AD 之外不起作用,因此不适用于 IdentityServer。
如果你真的成功了,请告诉我!
我想出了如何让它发挥作用。
实际上,我只需要做两件事。
首先,我必须在 Microsoft 生成的示例代码中删除对 AddAuthentication
的调用中的 OpenIdConnectDefaults.AuthenticationScheme
。所以代码变成:
services.AddAuthentication()
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
然后,在从临时 cookie 读取外部身份的代码中,我不得不使用 CookieAuthenticationDefaults.AuthenticationScheme。因此,该代码现在如下所示:
var authenticationResult = await HttpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme);
就这些了。