首先衷心感谢Rain在翻译过程中给我的帮助。其次翻译中的错误希望路过的大侠看出来的给指出一下。小女子这厢有礼了!
翻訳文:
SSOは何ですか。SSOはどう動きますか。
多くの会社は、ソフトウェアの代わりに、ウェブサイトあるいはウェブに基づくアプリケーションを開発して、システムの中で利用させます。セキュリティ保障のため、ASP.NET 2.0に基づいた認証と授権システムが必要です。そのようなシステムはメンバーシププロバイダー(Membership Provider)とロールプロバイダーあるいはそれらのカスタム実装(custom implementation)の中にあります。なんとしても、一般的には、何のウェブでもデータベースの中で、有効的なユーザ名とパースワードを識別する機能を持っている"Login.aspx"があります。あなたは、一つ、あるいは独自に働いている多数のウェブサイトしか持っていない場合、問題ないですけど、多数のつながされたウェブサイトあるいはお互いにリンクされたウェブサイトを持っている場合、あなたは必ず、どうして毎回別々ログインしなければならないでしょか、一つの登録システムを通じて、一つのウェブサイトにログインすることと同時に、関連ウェブサイトに全部認証される方法はないですか、という考えがあるでしょう。幸い、ASP.NET 2.0では、あるコンフィギュレーションを利用して、横断アプリケーションログイン(Cross Application Login)という願望は実現できます。
ASP .NETのコンフィギュレーションファイル(web.config)には、<machineKey>という要素は<system.web>の下に存在しています。主な役割はフォーム認証cookieデートとview-stateデートの暗号化、暗号解読を通じてout-of-process session stateを識別することです。一つ一つのウェブサイトは同じ<machineKey>を設定すれば、それらのアプリケーションはフォーム認証cookieも読み取られます。そのため、ユーザが認証されたと同時に、cookieもそのコンピュータに保存されました。そのほかの<machineKey>が持っているアプリケーションもこのcookieを認証として承認できます。その原因で、そのほかアプリケーションにはmachinekeyがあれば、ユーザは重複にログインする必要はありません。
<machineKey>情報は敏感なので、コンフィギュレーションファイルでこのセクションの情報を暗号化したほうかいいです。
その目的で、クラスConfigurationManagerとそのメンバーを利用します。そして、コンフィギュレーションの中で特定のセクションにmeta-informationが含まれているSectionInformation というクラスがあります。そのクラスにはProtectSection()というメソッドはコンフィギュレーションファイルを暗号化する役割があります。
原文:
What's SSO and how it works?
by Masoud Tabatabaei
In many companies there are some web sites or web base applications which are developed to cover the software needs in the systems. Of course, because of security issues they will have they authentication and authorization systems base on ASP.NET 2.0 built in Membership Provider and Role Provider or custom implementation of these mechanism. Anyway, by default all the web sites will have a "Login.aspx" web form which will authenticate the users throw their User and Passwords available in the database. While you have just one web site or web sites which are working independently there would be no problem, but since you may have two or more web site which are related together or having links together, you may think Why do you have to login in each application every time separately? Why cannot you have just one "Login.aspx" web page which authenticates the users and throw all the web application related together. Fortunately, in ASP .NET 2.0 you can achieve your goal of Cross Application Login by some configuration in your new or existing web sites.
In ASP .NET configuration file (web.config) there is an element inside <system.web> element named <machineKey> which Configures keys to use for encryption and decryption of Forms authentication cookie data and view-state data and for verification of out-of-process session state identification. If in each of your web sites you set the same <machineKey>, those applications can read Forms authentication cookies. So after the users have been authenticated and a cookie saved on its computer, the other applications with the same <machineKey>, can accept this cookie as a valid authentication ticket. So there would be no need to re-login in other applications with the same <machineKey> in their web.config file.
Because <machineKey> information is sensitive, you should encrypt the section information of your configuration file.
To accomplish this goal, I am going to use ConfigurationManager class and its members. There is also a class named SectionInformation which Contains meta-information on an individual section within the configuration. There is a method called ProtectSection(); this method is used to encrypt a section of your configuration file.
http://aspalliance.com/1545_Understanding_Single_SignOn_in_ASPNET_20.all