2017-07-21 10 views
0

ローカルアカウント(ボックスの通常のIDなど)を使用してユーザーに権限を付与し、Active Directoryアカウントを使用する(LDAPプロバイダーを使用する) 。これをASP.Net Coreプロジェクトでどうやって行うことができますか?そのような認証方法をシステム(Startupクラスを意味します)にどのように登録できますか?以前のバージョンでは、私が知る限り、FormAuthenticationを使用して解決することができましたが、ログオンする前に、プロバイダのいずれかでユーザーを確認してください(ユーザーに事前にアカウントの種類を指定させることができます)。 ASP.Net Coreでこれを行う方法がわかりませんし、ネットワーク上で同様の例が見つかりませんでした。ASP.Net Coreローカルユーザーの承認+ LDAP

答えて

0

System.DirectoryServicesは、ASP.NETコアでは現在のところ使用できません。あなたはhereをもっと読むことができます。ただし、Novell.Directory.Ldap.NETStandardを使用できます。

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

は、認証と承認のために、私たちは主張してCookie認証ミドルウェアを使用することができます。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
    ILoggerFactory loggerFactory) 
{ 
    app.UseCookieAuthentication(new CookieAuthenticationOptions 
    {     
     AuthenticationScheme = "AuthenticationScheme", 
     LoginPath = new PathString("/Account/Login"), 
     AccessDeniedPath = new PathString("/Common/AccessDenied"), 
     AutomaticAuthenticate = true, 
     AutomaticChallenge = true 
    }); 
} 

動きが少ないので、GitHubにworking sample projectを作成しました。

+0

素晴らしい答えをありがとう!それは私がそれがどのように動作するかを理解するのに十分な材料を含んでいた。 – Kazbek