【问题标题】:cross site authorization doesn't work跨站点授权不起作用
【发布时间】:2017-09-29 21:34:18
【问题描述】:

我有一个托管在 http://localhost:60455 上的 Web 应用程序,它使用 ASP.NET MVC 创建,另一个 Web 应用程序托管在 http://localhost:52775 上,它使用 ASP.NET Web API + Angular4 创建。

用户使用 WebForm 身份验证和 cookie 登录到 http://localhost:60455,之后用户可以移动到 http://localhost:52775 进行一些操作并返回。此时用户未被授权。 为什么http://localhost:60455 不使用早期设置的cookie?

【问题讨论】:

    标签: asp.net-mvc angular asp.net-web-api


    【解决方案1】:

    如果 2 个站点在同一台机器上运行,但在生产环境中它不能开箱即用,则此 应该在本地工作。

    它不允许令牌从系统 1 传递到系统 2。

    原因是 2 个站点将使用自己的 MachineKey 对令牌进行签名。

    这可以在每个站点的 web.config 中显式设置,以允许令牌在站点之间传递,但有点工作(我之前没有亲自做过):

    <configuration>
      <system.web>
        <machineKey decryptionKey="Decryption key goes here,IsolateApps" 
                    validationKey="Validation key goes here,IsolateApps" />
      </system.web>
    </configuration>
    

    或者,您可以选择一种无状态的方式来验证从站点 A 到 B 的请求。站点 A 的每个请求都将被签名,并且在执行任何操作之前签名在站点 B 上进行身份验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 2015-08-09
      • 2010-12-20
      • 1970-01-01
      • 2021-12-20
      • 2017-06-25
      • 2018-06-15
      相关资源
      最近更新 更多