マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • ASP.NETアプリケーションのP層部分のプロジェクトを分割すると、
    SessionCookieと、Cookie認証Ticketが共有できなくなり、
    ≒ Sessionが分割され、SSOもできない状態になる。

を共有する設定が必要になる。

詳細

SessionCookie?

下記の処置を施せば、Sessionを共有可能と思われる(未検証

SessionCookie?

  • SessionCookie?を共有するサイトのドメインを指定する。
  • SessionCookie?名を一致させる(既定値はASP.NET_SessionId?で一致している)。

Sessionデータ

  • 当然、InProc?モードではNGなので、StateServer?モードを選択する。
  • machineKeyを設定する(同一マシンなら不要?)。
  • アプリケーション名を設定する(設定処理はGlobal.asaxなどに実装)。
     <system.web>
       <!-- Cookieを共有するサイトのドメインを指定-->
       <httpCookies domain=".your.site"/>
       <!-- セッション StateServerにセッション保存、セッションクッキー名の指定、タイムアウト指定-->
       <sessionState
         cookieless="UseCookies"
         cookieName="ASP.NET_SessionId"
        mode="StateServer"
         regenerateExpiredSessionId="false"
         stateConnectionString="tcpip=10.1.1.1:42424"
         timeout="30">
       </sessionState>
       <!-- machineKeyを設定-->
       <machineKey
         validationKey="..."
         decryptionKey="..."
         validation="SHA1" decryption="AES" /> 
     </system.web>
     <appSettings>
       <!-- アプリケーション名を設定-->
       <add key="ApplicationName" value="appName" />
     </appSettings>

Cookie認証Ticket

また、Forms認証のCookie認証Ticketついては、

  • Cookie認証Ticket名だけ一致させておけば共有できる(既定値で一致していると思う)。
  • ドメイン
    • 単一サイト内ならドメイン指定を省略出来るが、明記することも出来る。
    • ドメイン間(サブ・ドメイン間)で共有するには、
      EnableCrossAppRedirects?をtrueに設定する。
      <authentication mode="Forms" >
        <!-- The name, protection, and path attributes must match 
             exactly in each Web.config file. -->
        <forms loginUrl="login.aspx"
          name=".ASPXFORMSAUTH" 
          protection="All"  
          path="/" 
          domain="contoso.com" 
          timeout="30" />
      </authentication>

参考

SessionCookie?

Cookie認証Ticket

Microsoft Docs

コードログ


Tags: :.NET開発, :ASP.NET


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-07-16 (木) 20:15:08 (29d)