Active Directory の Windows PC からユーザー名パスワードを入力しなくても、システムに安全にログオンできるようにしたいと考えています。アイデアは、私(ログオンしたWindowsマシンで実行されているクライアントソフトウェア)が、私が誰であるかをサーバーに証明する何らかのトークンを持っているということです(サーバーはADと通信して、トークンと私の身元を確認します身元)。これは .net 3 で可能ですか?
C# で使用されている言語。
Active Directory の Windows PC からユーザー名パスワードを入力しなくても、システムに安全にログオンできるようにしたいと考えています。アイデアは、私(ログオンしたWindowsマシンで実行されているクライアントソフトウェア)が、私が誰であるかをサーバーに証明する何らかのトークンを持っているということです(サーバーはADと通信して、トークンと私の身元を確認します身元)。これは .net 3 で可能ですか?
C# で使用されている言語。
クレームベースの認証を実際に検討する必要があると思います。
マイクロソフトは最近多くのことを行いました。Geneva Server (現在は正式に ADFS 2.0 と呼ばれています) と Geneva Framework (現在は正式に Windows Identity Foundation と呼ばれています) について聞いたことがあるでしょう。認証は中央のポイント/サーバー (Geneva サーバーまたは Security Token Server (STS) 一般に) で行われ、認証されたユーザーにはセキュリティ トークン (SAML 2.0 ベース) が与えられ、それをリソースに提示します。アクセスしたい。認証は、ユーザー名/パスワード、スマート カード、証明書などのさまざまな方法で行うことができます。また、あなたの場合は、Windows 認証 (Windows 統合認証と呼ばれる) のような既存のトークンを変換することによって行うこともできます。
トークンは SAML 2.0 ベースです (他のベンダーの STS 製品との良好な相互運用性にとって重要な業界標準)。アプリケーションまたはリソース (Web サービスも含む) で承認 (権限の付与) を行うために使用される人物に関するクレームが含まれています。そのためには、アプリケーションが STS によって与えられたクレームを信頼することがもちろん不可欠です。一方、アプリケーションは認証をまったく行う必要はありません。
Geneva Framework は、アプリケーションでトークンを処理するために使用されるライブラリ (.NET) です。使い方はかなり簡単です。
詳細については、このトピックを紹介するホワイト ペーパーを参照してください。公式サイトはこちら。
もちろん、これらの概念で対処される問題は他にもたくさんありますが、これは私見の興味深い部分です。これには、シングル サインオン (SSO)、フェデレーション シングル サインオン (複数の組織境界にまたがる)、委任 (アプリケーションがユーザー権限で Web サービスを使用する) が含まれます。この情報がお役に立てば幸いです。
乾杯
PS: もちろん、これは Microsoft の問題ではありません。同様の機能を提供する Sun OpenSSO、Ping Identity、および Thinktecture Identity Server などの他の STS 製品があります。質問で言及されているADおよびWindows認証との優れた相互運用性があるため、Microsoftのものを強調しました。
私が質問を正しく理解していれば、Kerberos がまさにこの例で探しているものであるかのように見えます。Kerberos 認証 (ターゲット環境でサポートされている場合) は、この方法のチケット認証を許可します。Brokered Authentication with Kerberosの仕組みの概要については、MSDN リファレンス on Brokered Authentication with Kerberosをお勧めします。
Kerberos による仲介認証 http://i.msdn.microsoft.com/Aa480562.ch1_brokauthkerb_f02(ja-jp,MSDN.10).gif
これをサポートする C# コードについては、MS Web サービスに焦点を当てたこのCodeProject 記事をお勧めしますが、他のシナリオで使用するための基礎を提供する可能性があります。
Windowsマシンでは、各アプリケーションスレッドは何らかのセキュリティトークンの下で実行されます。デフォルトでは、これは現在のユーザーのトークンです。したがって、マシンまたはネットワークでファイルを読み取りたい場合は、アプリケーションがトークンとともにそこに移動します。他のユーザーまたはサービス、または他の誰かとして機能するようにコードを偽装することができます。asp.netアプリとして使用している場合、Internet Explorerはバックグラウンドでiis(イントラネットエリア内)とデータを交換し、サーバーがユーザーを認識できるようにしますが、デフォルトでは資格情報の下で実行されません。 web.configを介して変更
ネットワーク リソース (ファイル共有、SQL Server など) にアクセスすると、アプリケーションは現在それを実行しているユーザーとしてそれらを自動的に実行します。もっと具体的なことをしたいですか?ドメインで運用している場合、アクセス許可は、使用するすべてのネットワーク リソースに自然に従う必要があります。
.NET を使用して他のユーザーになりすましてタスクを実行できますが、追加の手順を実行しなくても、ユーザーに再度ログインさせることなくユーザーの代わりに行動できます。