我已经实现了从 Azure AD 登录的选项。我使用的客户端类型是混合型。因此,现在,当用户在我的应用程序上输入受限控制时,他将被重定向到登录页面(在 IdentityServer 应用程序站点上),他可以在其中输入用户名和密码,也可以使用 Azure AD 帐户登录。
我想要做的是跳过登录页面并将用户直接重定向到 MS AD 登录页面。这意味着,用户将单击网站上的“登录”链接,这将引导他进入 Azure AD 登录页面。一旦他成功登录,他将被重定向回我的应用程序(基本上相同的流程,只需省去进入 IdentityServer 登录页面并单击外部登录按钮的额外步骤)。
这可能吗?
在客户端选项中,尝试将 EnableLocalLogin 设置为 false。来自文档:
启用本地登录
指定此客户端是否可以使用本地帐户或仅使用外部 IdP。默认为 true。
我也使用 Asp.Net Core Identity,如果 EnableLocalLogin 为 false 并且只有一个外部提供商,或者在请求中显式设置了 idP,我将 AccountsController 设置为绕过本地页面。
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> Login(string returnUrl = null)
{
// Clear the existing external cookie to ensure a clean login process
await HttpContext.Authentication.SignOutAsync(_externalCookieScheme);
var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
if (context?.IdP != null)
{
// if IdP is passed, then bypass showing the login screen
return ExternalLogin(context.IdP, returnUrl);
}
var vm = await BuildLoginViewModelAsync(returnUrl, context);
if (vm.EnableLocalLogin == false && vm.ExternalProviders.Count() == 1)
{
// only one option for logging in
return ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);
}
return View(vm);
}