代码之家  ›  专栏  ›  技术社区  ›  Bogdan

Asp.net共享同一域中两个应用程序的身份验证

  •  2
  • Bogdan  · 技术社区  · 10 年前

    我在同一个域中有两个应用程序:mydomain/app1和mydomain/app 2,我需要在它们之间共享身份验证。一个应用程序在Asp.NetWebForms中,第二个应用程序使用WebApi2。

    我配置web.config如下:

    附录1:

    <authentication mode="Forms">
      <forms loginUrl="/Login.aspx" defaultUrl="/Default.aspx" name=".ASPXFORMSAUTH" protection="All" cookieless="UseDeviceProfile" slidingExpiration="true" path="/" domain="mydomain" requireSSL="false" timeout="60" enableCrossAppRedirects="false">
      </forms>
    </authentication>
    <authorization>
      <deny users="?" />
      <allow users="*"/>
    </authorization>
    <machineKey validationKey="generated key1" decryptionKey="generated key2" validation="SHA1"/>
    

    附录2:

    <authentication mode="Forms">
      <forms loginUrl="/index.html" defaultUrl="/index.html" name=".ASPXFORMSAUTH" protection="All" cookieless="UseDeviceProfile" slidingExpiration="true" path="/" domain="mydomain" requireSSL="false" timeout="60" enableCrossAppRedirects="false">
      </forms>
    </authentication>
    <authorization>
      <deny users="?" />
      <allow users="*"/>
    </authorization>
    <machineKey validationKey="generated key1" decryptionKey="generated key2" validation="SHA1"/>
    

    我正在登录app1并观察cookie内容。 然后我在另一个浏览器选项卡中向app2请求URL。第二个选项卡中的cookie(名称和内容)与第一个选项卡中相同。 我希望来自第二个选项卡的请求由app2验证,因为cookie已经由app1验证。 然而,这并没有发生,我被重定向到app2的登录页面。

    1 回复  |  直到 10 年前
        1
  •  3
  •   Wiktor Zychla    10 年前

    正如OP所建议的,这是在这种情况下有效的答案。

    他们将cookie加密更改为4到4.5。您可以使两者在同一个.net下运行,也可以通过向机器密钥配置节点添加属性来打开4.5站点上的兼容性。

    https://social.microsoft.com/Forums/en-US/1791c5e3-4087-4e92-a460-51c5c4221f49/any-forms-auth-changes-in-45?forum=Offtopic

    推荐文章