我已经实现了从Azure AD登录的选项.我正在使用的客户端类型是Hybrid.现在,当用户在我的应用程序上输入受限制的控件时,他将被重定向到登录页面(在IdentityServer应用程序站点上),在该页面中,他可以输入用户名和密码,也可以使用Azure AD帐户登录.
我希望能够做的是跳过登录页面并将用户直接重定向到MS AD登录页面.这意味着,用户将单击网站上的"登录"链接,这将导致他进入Azure AD登录页面.一旦他成功登录,他将被重定向回我的应用程序(基本上是相同的流程,只需保存进入IdentityServer登录页面并单击外部登录按钮的额外步骤).
这可能吗?
在客户端选项中,尝试将EnableLocalLogin设置为false.来自文档:
EnableLocalLogin
指定此客户端是否可以仅使用本地帐户或外部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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |