2

配置 Azure ACS 以便当我在开发结构中本地运行时仍然可以进行身份​​验证的最佳方法是什么?

我只想配置一次,并且能够在本地开发并发布到 azure,而无需更改配置。只要我能以某种方式伪造声明,我什至愿意在本地开发时不使用联合身份验证。

4

2 回答 2

4

您可以拥有 ofWeb.ConfigWeb.Release.Config(每个构建配置的转换文件)。Web.Config 用于您的本地开发,其中您有领域,受众 URL 指向您的本地地址,即 127.0.0.1。然后,您可以为 编写转换文件Web.Config,例如Web.Release.Config,您可以在其中编写转换以将上述值替换为实际部署 URL。我假设您将使用发布版本部署到 azure。

这就是你的 web.config.release 的样子......

<microsoft.identityModel>
    <service>
      <audienceUris>
        <add value="https://abc.cloudapp.net/" xdt:Transform="Replace" />
      </audienceUris>
      <serviceCertificate xdt:Transform="Insert">
        <certificateReference x509FindType="FindByThumbprint" findValue="AAAAAAAAAAAAAAAAAAAAAAAAAAA" storeLocation="LocalMachine" storeName="My" />
      </serviceCertificate>
      <federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="https://myacs.accesscontrol.windows.net/v2/wsfederation" realm="https://abc.cloudapp.net/" requireHttps="true" xdt:Transform="Replace" />
        <cookieHandler requireSsl="true" xdt:Transform="Replace" />
      </federatedAuthentication>
    </service>   </microsoft.identityModel>
于 2013-04-01T04:12:33.720 回答
2

最简单的方法是使用 bhavesh 所说的配置转换,尽管他发布的 web.config 自 NET 4.5 以来已经过时。

您可以将本地开发配置保存在 中web.config,将云开发配置保存在中web.Debug.config,将生产配置保存在web.Release.config.

这是一个示例 web.Debug.config (仅相关部分):

<system.identityModel>
  <identityConfiguration>
    <audienceUris>
      <add xdt:Transform="RemoveAll" />
      <add value="http://myinstance.cloudapp.net/" xdt:Transform="Insert" />
    </audienceUris>
  </identityConfiguration>
</system.identityModel>

<system.identityModel.services>
  <federationConfiguration >
    <cookieHandler requireSsl="false" />
    <wsFederation passiveRedirectEnabled="true" issuer="https://mynamespace.accesscontrol.windows.net/v2/wsfederation" realm="http://myinstance.cloudapp.net/" reply="http://myinstance.cloudapp.net/" requireHttps="false" xdt:Transform="Replace"/>
  </federationConfiguration>
</system.identityModel.services>  

现在剩下要做的就是为您的 ACS 门户中的每个配置配置一个依赖方。

您实际上可以为所有 3 种配置配置一个 RP,但实现此目的的唯一方法是以编程方式使用服务管理 API,因为门户仅允许您为每个依赖方配置一个领域/返回 URL 值。

请注意,如果您决定这样做,则必须在 web.config(reply属性)中设置返回 url,否则 ACS 将始终使用第一个配置的返回 url(您在门户中看到的那个)覆盖它。

于 2013-04-01T18:59:48.677 回答