2017-08-10 26 views
0

我已經實現了從Azure AD登錄的選項。我使用的客戶端類型是Hybrid。所以現在,當用戶在我的應用程序中輸入一個受限制的控件時,他將被重定向到一個登錄頁面(在IdentityServer應用程序站點上),他可以輸入用戶名和密碼或使用Azure AD帳戶登錄。IdentityServer4 - 直接從外部提供商登錄

我想要做的是跳過登錄頁面並將用戶直接重定向到MS AD登錄頁面。意思是,用戶將點擊網站上的「登錄」鏈接,這將導致他進入Azure AD登錄頁面。一旦他成功登錄,他將被重定向回我的應用程序(基本上是相同的流程,只需保存進入IdentityServer登錄頁面並單擊外部登錄按鈕的額外步驟)即可。

這可能嗎?

回答

2

在客戶端選項中,嘗試將EnableLocalLogin設置爲false。從docs

EnableLocalLogin

,如果此客戶端可以使用本地帳戶,或僅外部境內流離失所者。默認爲true。

我也使用Asp.Net Core Identity,並且我設置AccountsController繞過本地頁面,如果EnableLocalLogin爲false並且只有一個外部提供程序,或者如果idP在請求中顯式設置。

[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); 
}