2017-07-13 2 views
0

Ich benutze Identityserver mit mehreren externen Behörden (Provider). Das Szenario, das ich hier versuchen möchte, ist, dass ich einen Client mit "EnableLocalLogin" als falsch konfiguriert habe. Ich habe mehrere externe Anbieter. Die folgende Codezeile in der "LoginViewModel.cs" im Schnellstart macht keinen Sinn.identityserver4 Quickstart LoginViewModel IsExternalLogInOnly Flag

öffentliche bool IsExternalLoginOnly => EnableLocalLogin == false & & ExterneProvider? .Count() == 1;

Dies ist falsch zurückgegeben und ich werde nicht an externen Anbieter umgeleitet. Sollte das ExternalProviders sein? .Count()> 0

Antwort

0

Meiner Meinung nach ist IsExternalLoginOnly nicht gut benannt. nur wird es genannt, wenn Sie die Login-Seite zeigen:

[HttpGet]   
public async Task<IActionResult> Login(string returnUrl) 
{   
    var vm = await _account.BuildLoginViewModelAsync(returnUrl);    
    if (vm.IsExternalLoginOnly)    
    {     
     // only one option for logging in     
     return await ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl); 
    }   
    return View(vm);   
} 

Es wird verwendet, um direkt zu einem Anbieter für den Fall umleiten der Benutzer keine Wahl hat.

Jetzt in Ihrem Fall haben Sie mehrere externe Anbieter und Sie müssen den Benutzer fragen, welchen zu verwenden. Sie können nicht automatisch diesen Schritt passieren, solange Ihr Kunde mehrere Anbieter

erlaubt können Sie Ihre eigenen Login-Code und versuchen, diesen Schritt nach dem returnUrl

zu automatisieren