0

認証にOWINとidentity2.0を使用するMVC 5アプリケーションがあります。ドメインは「DOM1」と言うことができますではない、彼らは、Windows認証を経てログインする必要があり、ドメイン「DOM1」上のユーザーのためのフォームベースのページ ログインしていないユーザーのドメイン名を確認する方法

  • が表示されるはずのユーザーに対して

    • : 私のアプリケーションは混合認証を必要とします。

    ユーザーが最初に私のAccount/Loginアクションに当たったときに、認証なしでユーザーのドメイン名を取得する方法を知りたいと思います。

    私が使用している:

    PrincipalContext pcontext = new PrincipalContext(ContextType.Domain); 
    var domainName = pcontext.ConnectedServer; 
    

    System.Security.Principal.WindowsIdentity context = System.Security.Principal.WindowsIdentity.GetCurrent(); 
    var domainName = pcontext.Name; 
    

    しかしウェブサイトは、クライアントのドメインを展開していないマシンのこれらのショーのドメイン名の両方を。

    私は何か災難をしている場合、何か助けていただければ幸いです。

  • 答えて

    1

    ドメインは

    Environment.UserDomainName 
    

    は、現在のユーザーに関連付けられたネットワークのドメイン名を取得し、ここで見ることができます。 MSDN documentationパー

    :現在のユーザーのためのWindowsアカウント名のドメイン名のコンポーネントを取得する

    UserDomainNameプロパティ最初の試み。その試行が失敗した場合、このプロパティはUserNameプロパティで指定されたユーザー名に関連付けられたドメイン名を取得しようとします。ホストコンピュータがドメインに参加していないために失敗すると、ホストコンピュータ名が返されます。

    認証されていない場合は、残念ながらホストコンピュータ名が表示されます。私が知っているこの周りには方法はありません。

    また、「認証なし」ここ

    HttpRequest.UserHostAddress 
    
    +0

    いいえ、IPアドレスではなくドメイン名が必要です。 –

    +0

    'Environment.UserDomainName'は、現在のユーザに関連付けられているネットワークドメイン名を取得します。 –

    +0

    いいえ、サーバーのドメイン名も返します –

    1

    クライアントの要求のIPアドレスを取得できますか?できません。 Windowsの認証は、ユーザーのアカウントが表示される前に完了している必要があります。

    これは、Windows認証の仕組みは次のとおりです。

    1. ブラウザは匿名でサイトにアクセスします。
    2. IISは401応答
    3. ブラウザは、IISが
    4. IISアプリケーションへの検証済みのWindows資格情報を渡すドメインコントローラで資格情報を検証し
    5. 含まれ、Windowsの資格情報を使用して要求を再度行うことで応答を返します。

    アプリケーションがユーザーのアカウントについて何かを見ることができるのは、認証が正常に完了した後のステップ5です。

    関連する問題