2

PHP と .NET の 2 つのアプリケーション間でシングル サインオン認証を実装しようとしています。PHP サイトは現在、ユーザーを認証するために .NET Web メソッドに対して Web サービス呼び出しを行っています。.NET サイトと PHP サイトの両方が同じデータベースを使用します。ユーザーが php サイトにログインすると、.net サイトにも自動的に認証されるシングル サインオン メカニズムを実装できるのではないかと考える傾向がありました。CAS 認証は、私のケースに多少関連しているようです。しかし、それが私のアプリケーションのどこに正確に収まるかはわかりません。それでは、それを個別のステップに分解させてください。私が正しいかどうか教えてください。

  1. ユーザーが www.myphpsite.com/login にアクセス

  2. ユーザー名とパスワードを入力し、ログイン ボタンをクリックします。

  3. 次に、.NET アプリケーション www.myDotNetApp.com と同じサーバーでホストされている .NET Web メソッドに対して Web サービス呼び出しが行われます。

  4. Web サービスは、データベースを使用してユーザーを認証します。

  5. ここのどこかに CAS が収まる必要があり、www..com と www.myDotNetApp.com の両方で認証されていることを確認する必要があります。これに加えて、ユーザーがサイト内のさまざまなページを表示できるように、www..com サイトのいくつかのセッション変数を設定する必要があります。

  6. 次に、Web メソッドはユーザーを www.myphpsite.com のホームページにリダイレクトする必要があります。

  7. ここで、ユーザーが www.myphpsite.com から www.myDotNetApp.com へのリンクをクリックすると、ユーザーはすでに認証されているため、www.myDotNetApp.com のプロファイル ページに移動する必要があります。

さて、これを達成することは可能ですか?もしそうなら、どのように?

4

2 に答える 2

1

あなたが提案することは可能ですが、CAS がどのように機能するかについて少し読むことをお勧めします。CAS プロトコルは優れたリソースです。

CAS が提供するのは、各 Web サイトで信頼されている認証プロバイダーです。これは、CAS を使用して認証を提供したい他の Web サイトと一緒にホストされる追加の Web サイト/サービスです。

例で提供した情報に基づいて、ほとんどの場合、次のようになります。

  1. ユーザーが PHP Web サイトにアクセスwww.myphpsite.com/loginすると、ユーザーがまだ認証されていないことがわかり、PHP Web サイトがユーザーを CAS Web サイトにリダイレクトします。

  2. また、CAS Web サイトはユーザーを認証済みとして認識しないため、ユーザーにログイン画面を表示します。ユーザーは、CAS がデータベースに対して検証する資格情報を入力し、ユーザーを PHP Web サイトにリダイレクトします。

  3. PHP Web サイトは、URL パラメータを介して CAS からサービス チケットを受け取ります。これは、バックエンド Web サービス呼び出しを行う CAS で検証されます。サービス チケットが有効であるという確認を CAS から受け取ると、PHP は組み込みの認証手順を使用してユーザーをログインさせます (つまり、データベースに対して検証する代わりに、PHP Web サイトは CAS を使用して検証し、ユーザーが本物であることを確認します)。

  4. この時点で、ユーザーが .NET Web サイトにアクセスしようとするとwww.myDotNetApp.com、組み込みの認証手順を使用してユーザーを認証済みとして認識できないため、ユーザーを CAS Web サイトにリダイレクトします。

  5. ただし、CAS の Web サイトは、ユーザーが認証済みであることを既に認識しています。ユーザーにログインを求める代わりに、CAS はユーザーを .NET Web サイトに自動的にリダイレクトし、サービス チケットを URL パラメーターとして提供します。次に、.NET Web サイトは、サービス チケットを検証する CAS へのバックエンド Web サービス呼び出しを行い、組み込みの認証手順を使用してユーザーをログインさせます。

要約すると、CAS はユーザーが認証するための単一の場所を提供します。その後、他の Web サイトは、認証の必要性を CAS に送信できます。CAS は、ユーザーにログインを要求するか、ユーザーが既にログインしていることを認識して Web サイトに通知します。

于 2013-11-13T20:33:55.820 に答える
0

CAS をハブ、アプリをハブ & スポーク モデルのスポークと考えてください。多くは実装に基づいていますが、一般的なプロセスは次のとおりです。

ユーザーが PHP アプリの保護された領域に到達すると、CAS にリダイレクトされます。それらは、データベースに対して設定された CAS に対して認証されます。認証が成功すると、認証されたトークンを使用してアプリケーションに戻され、サインインされます。アプリが正しく実装されている場合は、移動しようとしていたのと同じページに戻ります。

.net アプリに送信するリンクをクリックすると、通常どおりに移動します。ページが認証を必要とする場合、それらはすでにそれらを認識している CAS にルーティングされ、トークンを使用してアプリに戻されます。トークンは検証されてから入力されますが、ほとんどの場合、それらが CAS アプリケーションにヒットしたことに気付くことはありません。

関係がある場合に備えて、PHP アプリは、ページにリンクするだけでなく、ユーザーとして .net アプリを呼び出す必要があると仮定しましょう。.net コンテンツをユーザーとして取得する必要があります... CAS もサポートしています。これにより、php アプリケーションはユーザーになりすまして .net を直接呼び出すことができます。

詳細については、CASアーキテクチャプロトコルを確認してください。

于 2013-11-13T21:26:59.800 に答える