私は2つのサイトを持っています:
- サイトA-asp.netサイト
- サイトB-phpサイト
すべてのユーザー情報はasp.netサイト(実際にはKenticoサイト)にあります。現在、ユーザーがサイトBに同じ資格情報でログインできる必要があるというビジネス要件があります。理想的には、サイトAにログインしてサイトBに移動するユーザーは、認証が自動的に行われる必要があります。
この形式の認証を実現する方法はありますか。それとも不可能ですか?
私は2つのサイトを持っています:
すべてのユーザー情報はasp.netサイト(実際にはKenticoサイト)にあります。現在、ユーザーがサイトBに同じ資格情報でログインできる必要があるというビジネス要件があります。理想的には、サイトAにログインしてサイトBに移動するユーザーは、認証が自動的に行われる必要があります。
この形式の認証を実現する方法はありますか。それとも不可能ですか?
これに対する標準的な解決策は、 OpenIDのようなプロトコルを使用することです。OpenIDを使用すると、Webサイトは、ユーザーに別のサイトを使用して自分自身を認証するように依頼し、それらの資格情報を尊重することができます。「属性交換」と呼ばれるプロトコルを使用して、認証プロバイダーはユーザーに関する追加データを提供できます。
OpenIDは、StackExchangeがGoogleアカウント(または使用しているもの)でログインする方法であり、SOネットワーク内のサイトがどこからでもログインしなくてもIDを認識する方法です。
OpenIDの利点は、広く使用されているプロトコルであるため、安全性が高く、十分にテストされている可能性が高いことです。独自のソリューションを作成し、誤ってユーザーをセキュリティリスクにさらすリスクはありません。十分に文書化されており、広くサポートされています。
.Net用のOpenIDフレームワークがあり、独自のOpenIDプロバイダーを作成できます。Kenticoは認証メカニズムとしてOpenIDをサポートしているようです。PHP用のOpenIDライブラリがいくつかあります(Googleはここであなたの友達です)。
これをどのように実装するかは、Kentico認証が現在どのように機能するかによって異なりますが、原則として、Kenticoユーザーデータベースを作成したOpenIDプロバイダーに接着するのはかなり簡単です。Kenticoにそれを認証に使用させることは、構成設定のようです。OpenIDを使用するには、PHPサイトを書き直す必要があります。繰り返しになりますが、それが現在どのように機能しているかは明確ではありませんが、他のどのソリューションよりも難しいとは思えません。
これは認証の問題ではなく、承認の問題です。必要な方法で、必要なテクノロジを使用してユーザーを認証したら、サイト内のさまざまなリソースに認証を付与するために使用する何らかのトークンをユーザーに付与する可能性があります。
あなたの場合、2つの異なるテクノロジーがあります。つまり、すぐに使用できるasp.netまたはphpセッション管理を使用することはできませんが、必要なのは、セッションを確認するための共通の場所があることだけです。トークンは有効であり、正当なユーザーに属し、そのユーザーにはこのリソースにアクセスするためのアクセス許可があります。
上記が些細なことである場合は、申し訳ありませんが、質問は2つの異なるドメインにあるサイトに向けられているため、ドメインCookieを使用してセッション情報を保存することはできません。そうですか?
.netプラットフォームでも同様の問題が発生し、1つのサブドメインに配置するオプションがありませんでした。その場合、ユーザー名とトークン(ユーザーがサイトBによってすでに認証されていることを意味します)、およびおそらく暗号化されたパスワードを渡して、外部DBに対して再認証し、サイトにリダイレクトすることができます。私の場合、サイト管理者向けに対応するサイトCMSにリダイレクトしていたため、これを行う必要がありました。