6

取得を通じて、認証と承認が必要な製品が多数あります。製品には Web サイトとクライアント側アプリケーションが含まれ、クライアント側アプリケーションはいくつかの Web サービスを使用します。私たちは .Net ショップであり、サーバーは Server 2008 を実行し、クライアントは XP SP を実行します?? 以降。

製品のユーザーは私たちの組織の一部ではなく、スタンドアロン PC を持つ単一のユーザーから Active Directory などを実行している組織内のユーザーまで実行されます。

現在、共通の認証または ID ストアはなく、私たちはそれを改善しようとしています。私たちの目標は次のとおりです。

  • すべての製品で単一のユーザー名とパスワード (または証明書)。
  • 理想的には、シングル サインオン (クライアント アプリから Web サイトを起動する場合は簡単ですが、ユーザーが最初に Web サイトにログオンし、後でクライアント側アプリを起動する場合はおそらくそうではありません)。
  • プラス通常; 堅牢でスケーラブル...

ほとんどの企業と同様に、リソースは限られており、スケジュールはタイトです。

推奨される認証パスの 1 つは Kerberos です。これは、クライアント アプリが Web サービスに対して認証するためのおそらく理想的なルートですが、ユーザーがユーザー名とパスワードを送信し、Web サーバーが発券を担当します(その後、チケットをCookieに保存しますか?)。単一の ID ストアと、ユーザー名とパスワードを取得し、並べ替えられたハッシュと比較して、カスタムの時間ベースのセキュリティ トークンを発行する独自の認証サービスを使用する方がよいと思います。多分SqlMembershipProviderを使用しますか?

ここまで読んでくれた人に感謝します。Kerberos はこのシナリオに最適ですか、それとも別の方法を検討する必要がありますか? 適切でない場合、その理由は何ですか?

承認のために AD LDS も検討していますが、この投稿はすでに十分に長いと思います...

4

4 に答える 4

4

Kerberos が実際にはそのようなユース ケース向けに設計されておらず、一般にファイアウォールとうまく連携しないことを除けば、本質的に問題はありません。たとえば、おそらく内部で使用しているのと同じ Kerberos KDC への外部アクセスを開きたくないでしょう。

さらに、MS Kerberos のことを意味しているのであれば、Kerberos を開くと、遅かれ早かれ開かなければならない MS プロトコルのネズミの巣がまったく別のものになります。 .

それは言った:

[...] 独自の認証サービスを使用した方がよいのではないかと思います

ほぼ確実にそうではありません。通常、車輪を再発明したくはありません。そうしなければならない場合は、その車輪を再発明する必要はありませ。認証プロトコルは一般に実行が難しく、Web アクセスの場合はさらに困難です。すでに存在するものに固執します-基本認証+ SSLまたはクライアント証明書とSSLに加えて、セッション追跡(これが本当に重要な場合はSSLを介して)、またはADとは異なるLDAPサービス。これらのアプローチにはすべて独自の問題がありますが、独自のものを展開する場合ほど多くはありません。

于 2009-06-23T15:36:29.607 に答える
1

Web サイトの場合、SPNego/GSS-API/Kerberos を使用できます。主要なブラウザーと Web サーバーはすべて SP Nego をサポートしています。LDAP、NFS、および HAdoop がすべて Kerberos をサポートしているため、このソリューションを検討する必要があります。ネゴシエート オプションを指定した curl コマンドを確認してください。

于 2012-01-13T23:49:15.597 に答える
1

単一のユーザー アカウント用の OpenID と、アプリが別の Web サイトのデータにアクセスすることを承認する OAuth は、優れた分散型ソリューションになります。はい、Active Directory やその他の純粋なシングル サインオン ソリューションは同種の環境ではうまく機能しますが、組織内ではかなり異なっているように思えます。

安全な OpenID プロバイダーをセットアップすることは、実際には大きな責任であり、Web サーバーと一緒にライブラリーを平手打ちするだけで簡単に作成できるものであってはなりません。ユーザーが自分の OpenID を使用できるようにし、ユーザーが OpenID を登録するデータベースを用意して、システム全体で従業員/メンバーとして認識されるようにすることができます。システムのさまざまな部分で、OpenID のメンバーシップをデータベースに対して直接確認するか、OAuth を使用してメンバーシップを確認することもできます。

これら 2 つのテクノロジを組み合わせる方法には、非常に興味深い可能性があります。

于 2009-05-09T19:48:05.980 に答える