web-dev-qa-db-ja.com

ASP.NET 5 / MVC6オンプレミスActiveDirectory

以前のバージョンの.NETアプリケーションテンプレート(4.5.2)の場合は、新しいWebアプリケーションを作成し、認証を[職場と学校のアカウント]に変更して、[オンプレミス]を選択できます。 .NET 5 Webアプリケーションテンプレートでは、[職場と学校のアカウント]オプションに[オンプレミス]オプションがありません。

ASP.NETIdentityを使用して.NET5のオンプレミスActiveDirectory(LDAP)を介して認証するにはどうすればよいですか。明確にするために、私はWindows認証を探していません。ユーザーに資格情報を入力させ、オンプレミスADに対する認証を処理してもらいたいのです。 IOW、ユーザーはWindowsマシンにログインする必要はなく、モバイルデバイスなどからアクセスできます。

私は何時間も無駄に検索しましたが、答えがどこかにあるとしても驚かないでしょう。どんな助けでも大歓迎です!

13
Blackrain

LDAPとオンプレミス認証は同じものではありません。そのため、IMHOのオンプレミスモードは「すぐに使える」オプションとして廃止されました。また、Microsoftがすべての人にAzureクラウドへの移行を強く求めているためです。 )

オンプレミスモード(ご覧のとおり ここ )は、ADをフェデレーションプロバイダーとして使用する方法です(これをチェックしてください [〜#〜] sf [〜#〜] )、必要に応じて、TwitterやFacebookなど。 ADFSは、ローカル(ADがサポートしている場合)またはクラウド(Azureを使用)で使用できます。

LDAP認証を探している場合、最も簡単な方法は、「個人ユーザーアカウント」モード(古い学校のフォーム認証に似ています)を使用し、ADをユーザー認証の信頼できる情報源として使用することです(チェック- this SO article):

    using System.Security;
    using System.DirectoryServices.AccountManagement;
    public struct Credentials
    {
        public string Username;
        public string Password;
    }

    public class Domain_Authentication
    {
        public Credentials Credentials;
        public string Domain;
        public Domain_Authentication(string Username, string Password, string SDomain)
        {
            Credentials.Username = Username;
            Credentials.Password = Password;
            Domain = SDomain;
        }
        public bool IsValid()
        {
            using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Domain))
            {
                // validate the credentials
                return pc.ValidateCredentials(Credentials.Username, Credentials.Password);
            }
        }
    }

とにかく、異種システムで作業している場合、またはより「安全な」もので作業したい場合は、MVC6ですぐに使用できるサポートとしてOAuth2を使用することをお勧めします。

更新

LDAPでASP.NETIdentityを使用する場合は、完全に説明されているように、個人のカスタムストレージプロバイダーを作成できます ここ 。これは難しいことではありませんが、実装にはかなり長い時間がかかる可能性があります。

10
Luca Ghersi

.NET Coreは出荷時にWS-Fedをサポートしないため、オンプレミスオプションはありません。古いバージョンの.NETon-permisesではLDAPを使用していませんでしたが、WS-Fedを使用してADFSサーバーと通信していました。

ASP.NETの非常に古いバージョンにはADメンバーシッププロバイダーがありましたが、セキュリティの点で問題があり、ASP.NET4.0に移行しませんでした。

独自のメンバーシッププロバイダーを実装することもできますが、.NETCoreにはLDAP/System.DirectoryServiceクラスがないため、ソケットを介してLDAPと通信するライブラリを作成するなど、すべてを最初から行う必要があります。

TLDR:できません。

1
blowdart

テンプレートなどについてはわかりませんが、このガイドに従って、oAuth2とOwinを使用して独自のIDプロバイダーをセットアップします。

http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-and-identity-2/

次に、Active Directoryに対して認証するために、独自のユーザーストアとユーザーマネージャーを作成し、Directory.MasnagementアセンブリのUserPrincipalクラスとPrinipalContextクラスを使用して手動で認証します。

0
Ryan Mann