1

私は私が何をしたいのかthis linkCookie認証と並んでasp.netコアWindows認証をどのように使用できますか?

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
    { 
     AuthenticationScheme = "CookieAuthentication", 
     LoginPath = new PathString("/Login/"), 
     AccessDeniedPath = new PathString("/Login/"), 
     AutomaticAuthenticate = true, 
     AutomaticChallenge = true 
    }); 

にあるもののようなクッキー認証を使用しているASP.netコア(.NETフレームワーク4.7)アプリケーションは、クッキー認証でWindows認証を許可されています。ユーザーが会社のドメインにいる場合、ユーザー名とパスワードを入力する必要はありません。しかし、外部ドメインから来ている場合は、ログインページにリダイレクトされ、ユーザー名とパスワードを入力して認証されます。

+0

現在、外部ドメインユーザーをどのように認証していますか? – Win

+0

私はそれをクッキー認証によって行います。 – Baso

答えて

1

ユーザーが会社のドメインにいる場合、ユーザーは ユーザー名とパスワードを入力する必要はありません。

doesn't have to enter user name and passwordはトリッキーな部分です。あなたが知っている限り、認証の両方を同時に満足することはできません。

しかし、両方のタイプのユーザーにユーザー名とパスワードを入力し、システムで最初に認証することができます。認証に失敗すると、ドメインアカウントで認証できます。

このシナリオを実行できる場合は、ASP.NETコアでNovell.Directory.Ldapを使用できます。 Hereがサンプルコードです。

public bool ValidateUser(string domainName, string username, string password) 
{ 
    string userDn = $"{username}@{domainName}"; 
    try 
    { 
     using (var connection = new LdapConnection {SecureSocketLayer = false}) 
     { 
     connection.Connect(domainName, LdapConnection.DEFAULT_PORT); 
     connection.Bind(userDn, password); 

     if (connection.Bound) 
      return true; 
     } 
    } 
    catch (LdapException ex) 
    { 
     // Log exception 
    } 
    return false; 
} 

注:今日の時点で、System.DirectoryServicesはまだASP.NETコアでは使用できません。

+0

私はapp.UseMvcの後にapp.UseCookieAuthenticationを置くことができると思っていました.Windowsの認証がパイプラインを動作させずにCookieAuthenticationに到達し続けると、Windowsの認証と匿名の認証が有効になります。私のログインコントローラは[AllowAnonymous]にアクセスすることができ、残りのコントローラは[Authorize]属性を持つことができます。それはどんな方法でも可能ですか? ありがとう、 – Baso

+0

これらの2つのミドルウェアを一緒にできるかもしれません。私はそれを試みたことがないので、私は確かに言うことができませんでした。 – Win

関連する問題