4

少し背景がありますが、私は、ユーザー名やパスワードなどを使用して従来のログイン画面からログインできる一連のユーザーがいる既存のWebアプリケーションに取り組んでいます。

最近、ユーザーにイントラネットサイトにログインしてもらい、ユーザーにイントラネット上のリンクをクリックしてアプリケーションにリダイレクトできるようにしたいと考えているクライアント(独自のイントラネットサイトを持っている)をスコアリングすることができました。自動的にログインします。

これまで、これを実装する方法について2つの提案がありました。

  1. 2つのパラメーター(「ユーザー名」と「パスワード」)を受け取るURLを作成し、イントラネットサイトにそれらのパラメーターを渡してもらいます(接続はSSL / TLSを介しているため、すべて暗号化されています)。これは問題なく動作しますが、少し「ハッキー」に見えます。また、ログインとパスワードが両方のシステムで同じである必要があることを意味します(また、ユーザーのパスワードを更新できる何らかのWebサービスを作成する必要があります。これも少し安全ではないようです)
  2. イントラネットにトークンを提供します。これにより、クライアントがイントラネット上のリンクをクリックすると、認証されたことを意味するユーザー名(パスワードなし)とともにトークンが送信されます。繰り返しになりますが、これは少しハッキーに聞こえます。これは、ログインするために全員に同じパスワードを提供することと本質的に同じではないのですか?

要約すると、私は次のことを求めています。

  1. イントラネットですでに認証されているユーザーが、あまり混乱することなく、また外部システムを使用して認証することなく、つまりLDAP/Kerberosでシステムにログインする方法。
  2. このクライアントにあまり固有ではなく、他のイントラネットで簡単に実装してログインできるもの
4

2 に答える 2

2

SSLを使用している場合でも、提案されたオプションはどちらも安全ではありません。URLにクレデンシャルを渡さないでください。POSTを使用してHTTPリクエストに入れてください。

SAMLと呼ばれる標準があり、これを使用して問題を解決できます。課題は、実装するバージョンを選択することです。私はSAML2.0を選びます。

GoogleAppsはSAML2.0のフレーバーを実装し、イントラネットのクレデンシャルを使用して認証できるようにします。アプリケーションの場合、あなたがサービスプロバイダーになり、クライアントがIDプロバイダーになります。標準を正しく実装している限り、新しいクライアント(IDプロバイダー)をサポートできるはずです。これがあなたが見てみたいと思うかもしれないSAML実装のリストです。クライアントが認証情報に加えて情報を渡す必要がある場合、SAMLはメタデータを使用してこれを容易にすることができます。

ネットワークトラフィックを暗号化するには、SSLを実装する必要があります。

于 2010-03-25T23:41:14.747 に答える
0

私は自分の質問に答えるのは嫌いですが、答えのない質問はもっと嫌いです。最終的に、SalesForceの委任された認証SSO実装の非常に類似した実装を採用しました。

http://wiki.developerforce.com/page/How_to_Implement_Single_Sign-On_with_Force.com

基本的に、このソリューションには、委任された認証機関と呼ばれる信頼できるサイトがあり、会社のイントラネットにログインしているユーザーのリストがあります。

ユーザーが会社のイントラネットにログインし、アプリケーションへのリンクをクリックすると、会社のイントラネットはユーザー名と生成されたトークン(設定された時間が経過すると期限切れになります)をアプリケーションに渡します。

次に、アプリケーションはユーザー名がサイトにあるかどうかを確認し、ある場合は、ユーザー名/トークンを(ソースIPおよびその他のいくつかのパラメーターとともに)委任された認証機関に送信します。委任された認証機関でこれらすべての項目が一致する場合、trueが返され、ユーザーはログインできます。falseが返される場合、ユーザーはアクセスを拒否されます。

このシステムは非常にうまく機能し、SSL、クライアント側の証明書、VPNトンネル、さらにはサイトと委任された認証機関にアクセスできるIPアドレスの制限などの追加のセキュリティ機能をいくつか実装しました。

あなた自身の質問に答えるのは悪い形だと私は知っていますが、これが同じ問題を抱えているかもしれない他の誰かに役立つことを願っています...

于 2012-03-05T23:56:27.270 に答える