0

PC(Windows 7、IIS 7.5)の2つのアプリケーション間で認証を使用しようとしていますが、すべてうまくいきます。しかし、問題は、これらのサイト(Windows Webサーバー2008、IIS 7.0)を公開しようとすると、相互認証が機能しなかったことです。

長い調査の結果、2番目のサイトにある次のコードでエラーが発生したことがわかりました。

Dim formsCookie As HttpCookie = Request.Cookies(FormsAuthentication.FormsCookieName)
    If (formsCookie IsNot Nothing) Then
    Else
    ' always null

コードビハインドでこのようなパスをチェックしようとしました:

 Dim ticket As New FormsAuthenticationTicket(1, smsProfile, DateTime.Now, _
                                                       DateTime.Now.AddDays(1), True, AdminSessions.UserObj.Pid, _
                                                       FormsAuthentication.FormsCookiePath)
    Dim hash As String = FormsAuthentication.Encrypt(ticket)
    Dim cookie As New HttpCookie(
       FormsAuthentication.FormsCookieName,
       hash)
    If (ticket.IsPersistent) Then
        cookie.Expires = ticket.Expiration
    End If
    Response.Cookies.Add(cookie)
    Response.Redirect(smsPortal)

web.config:

       <authentication mode="Forms">

        <forms name=".ASPXFORMSAUTH" enableCrossAppRedirects="true" domain="mydomain.com.jo" loginUrl="http://..." protection="All" path="/"/>

    </authentication>

ローカルPCのIISとサーバーの違いを教えてください。

ありがとう。

4

1 に答える 1

2

ブラウザが最初のサイトから 2 番目のサイトに認証 Cookie を送信していない可能性が高くなります。Cookie パスとドメインを確認してください。両方のサイトが同じドメインにあり、Cookie パスが共通のルートに設定されている必要があります。

詳細については、このリンクを参照してください: Cookie ドメインとパス

トラブルシューティングを支援するために、Fiddler や Firebug などのユーティリティを使用して、要求で送信されている Cookie を表示し、サイト 1 (ユーザーがログインした場所) によって設定された認証 Cookie がサイト 2 にも送信されていることを確認します。

サイトが同じサーバー上にない場合は、同じ machineKey 構成を使用しているかどうかも確認してください。

于 2013-02-21T06:09:32.743 に答える