2017-08-10 13 views
0

私はAzure ADからログインするオプションを実装しました。私が使用しているクライアントタイプはHybridです。これで、ユーザーがアプリケーションで制限付きのコントロールを入力すると、ユーザー名とパスワードを入力するか、Azure ADアカウントでログインすることができるログインページ(IdentityServerアプリケーションサイト上)にリダイレクトされます。IdentityServer4 - 外部プロバイダから直接ログイン

ログインページをスキップして、ユーザーを直接MS ADログインページにリダイレクトすることができます。つまり、ユーザーはウェブサイト上の「ログイン」リンクをクリックすると、Azure ADログインページに移動します。ログインに成功すると、彼は自分のアプリケーションにリダイレクトされます(基本的に同じフローです.IIS IdentityServerログインページに入り、外部ログインボタンをクリックするという余計な手順を省きます)。

これは可能ですか?

答えて

2

クライアントオプションで、EnableLocalLoginをfalseに設定してみてください。 docsから:

EnableLocalLogin

このクライアントは、ローカルアカウントのみ、または外部のIdPを使用できるかどうかを指定します。デフォルトはtrueです。私もAsp.Netコアのアイデンティティを使用しています、とEnableLocalLoginがfalseで、唯一の外部プロバイダがある場合、私は地元のページをバイパスするAccountsControllerを設定し、または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); 
} 
関連する問題