身份服务器 4 和 Azure AD
Identityserver 4 and Azure AD
我正在考虑在基于 C# 的 MVC 应用程序中使用 Identity Server 4 进行身份验证。我想使用存储在 Azure AD 中的帐户作为有效用户的来源,但文档似乎只提到了 Google 和 OpenID,并且只是顺便提到了 Azure。
有人知道关于如何在 Identity Server 4 中使用 Azure AD 的任何好的文档 and/or 教程吗?
您可以使用从 IdentityServer 登录到 Azure AD,就像从例如从 IdentityServer 使用登录到 IdentityServer 一样。 Javascript 或 MVC 应用程序。
我最近这样做了,您需要做的就是像这样向 Azure Ad 注册 OpenIdConnect 选项:
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
});
}
然后您应该在登录操作中调用 ChallengeAsync 方法:
var authenticationProperties = new AuthenticationProperties { RedirectUri = "your redirect uri" };
await HttpContext.Authentication.ChallengeAsync(your policy, authenticationProperties);
然后提供回调方法作为 GET 方法,然后按照 IdentityServer 示例中提供的外部登录示例进行操作:https://github.com/IdentityServer/IdentityServer4.Samples/blob/dev/Quickstarts/4_ImplicitFlowAuthenticationWithExternal/src/QuickstartIdentityServer/Quickstart/Account/AccountController.cs
有一个sample with Azure AD on github , forked from External Login sample provided in IdentityServer samples。
该样本还修复了一个已知问题"State parameter generated by middleware is too large for Azure AD #978"
IdentityServer4 具有“Sign-in 与外部身份提供商”的文档
不幸的是它不完整,但这是我所做的:
Startup.cs
对于 .NET 5,Program.cs
对于 .NET 6:
services.AddAuthentication()
.AddOpenIdConnect("aad", "Azure AD", options =>
{
options.ClientSecret = "<ClientSecret>";
options.ResponseType = OpenIdConnectResponseType.Code;
options.ClientId ="<ClientId>";
options.Authority = "https://login.microsoftonline.com/<TenantId>/";
options.CallbackPath = "/signin-oidc";
})
.AddIdentityServerJwt();
然后您将在“使用其他服务登录”下看到一个外部登录。:
完成登录后,您应该会看到此消息。
点击 Register
后默认设置卡住了。这是由于新电子邮件未得到确认。这可以通过设置 SignIn.RequireConfirmedAccount = false
来解决
services.AddDefaultIdentity<ApplicationUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
对于新用户,您还可以使用“重新发送电子邮件确认”或在 [dbo].[AspNetUsers]
中将 EmailConfirmed
设置为 true。
Azure 广告设置。您还需要在 Certificates & secrets
.
下添加客户端密码
我正在考虑在基于 C# 的 MVC 应用程序中使用 Identity Server 4 进行身份验证。我想使用存储在 Azure AD 中的帐户作为有效用户的来源,但文档似乎只提到了 Google 和 OpenID,并且只是顺便提到了 Azure。
有人知道关于如何在 Identity Server 4 中使用 Azure AD 的任何好的文档 and/or 教程吗?
您可以使用从 IdentityServer 登录到 Azure AD,就像从例如从 IdentityServer 使用登录到 IdentityServer 一样。 Javascript 或 MVC 应用程序。
我最近这样做了,您需要做的就是像这样向 Azure Ad 注册 OpenIdConnect 选项:
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
});
}
然后您应该在登录操作中调用 ChallengeAsync 方法:
var authenticationProperties = new AuthenticationProperties { RedirectUri = "your redirect uri" };
await HttpContext.Authentication.ChallengeAsync(your policy, authenticationProperties);
然后提供回调方法作为 GET 方法,然后按照 IdentityServer 示例中提供的外部登录示例进行操作:https://github.com/IdentityServer/IdentityServer4.Samples/blob/dev/Quickstarts/4_ImplicitFlowAuthenticationWithExternal/src/QuickstartIdentityServer/Quickstart/Account/AccountController.cs
有一个sample with Azure AD on github , forked from External Login sample provided in IdentityServer samples。
该样本还修复了一个已知问题"State parameter generated by middleware is too large for Azure AD #978"
IdentityServer4 具有“Sign-in 与外部身份提供商”的文档
不幸的是它不完整,但这是我所做的:
Startup.cs
对于 .NET 5,Program.cs
对于 .NET 6:
services.AddAuthentication()
.AddOpenIdConnect("aad", "Azure AD", options =>
{
options.ClientSecret = "<ClientSecret>";
options.ResponseType = OpenIdConnectResponseType.Code;
options.ClientId ="<ClientId>";
options.Authority = "https://login.microsoftonline.com/<TenantId>/";
options.CallbackPath = "/signin-oidc";
})
.AddIdentityServerJwt();
然后您将在“使用其他服务登录”下看到一个外部登录。:
完成登录后,您应该会看到此消息。
点击 Register
后默认设置卡住了。这是由于新电子邮件未得到确认。这可以通过设置 SignIn.RequireConfirmedAccount = false
services.AddDefaultIdentity<ApplicationUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
对于新用户,您还可以使用“重新发送电子邮件确认”或在 [dbo].[AspNetUsers]
中将 EmailConfirmed
设置为 true。
Azure 广告设置。您还需要在 Certificates & secrets
.