ASP.NETによるワンポイント登録(SSO)は、さまざまな場合に適しています

2191 ワード

1つ目は、プライマリドメインと異なるサブドメイン間で単一のログインを実現することです.
Form検証は実はアイデンティティクッキーの検証に基づいている.クライアントがログインすると、ユーザのアイデンティティ情報(ticketを含む)を含むクッキーが生成され、このクッキーの名前はwebにある.configでAuthenticationセクションformに設定されたname情報は、次のようになります.
 
  




ここ、ASPNETAUTHはこのCookieの名前です.RequestでCookiesコレクションにはこのクッキーが含まれており,ユーザアイデンティティ情報の伝達を実現している.だから、認証情報を共有する考え方は簡単です.この認証クッキーがドメイン名で共有できれば、Form認証情報は自然に共有できます.
コード実装:

string userData = JsonHelper.ScriptSerialize(user);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.userid.ToString(), DateTime.Now, DateTime.Now.AddHours(4), false, userData);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));//      ,   Cookie
cookie.Domain = ".zuowenjun.cn";
Response.Cookies.Add(cookie); 

2つ目は、仮想ディレクトリのプライマリアプリケーションとサブアプリケーションの間でSSOを実現することです.
 
  




重要な2つの属性はnameとprotectionです.プロテクション属性が"All"に設定と、Hash値による暗号化及び検証データがCookieに格納される.デフォルトの検証と暗号化で使用されるKeyはmachineに格納されます.configファイルは、アプリケーションのWebで使用できます.Configファイルはこれらの値を上書きする.デフォルト値は次のとおりです.
 
  


IsolateAppsは、アプリケーションごとに異なるKeyを生成することを表す.これは使えません.複数のアプリケーションで同じキーを使用してCookieを暗号化復号するために、IsolateAppsオプションを削除するか、SSOを実装する必要があるすべてのアプリケーションのWebでより良い方法を実行することができます.Configで特定のキー値を設定します.
 
  


3つ目は、ドメイン名の異なるアプリケーションでSSOを実現することです(上記の場合にも適しています)
主にページURLパラメータを用いて従来の実装を再定義する方法が多いが,セキュリティの問題に注意する必要があるかもしれない.