本地和生产的Azure ACS配置

时间:2013-04-01 01:31:22

标签: azure wif acs azure-acs

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

我只想配置一次并能够在本地开发并发布到azure而无需更改配置。我甚至愿意在本地开发时不使用Federated Auth,只要我能以某种方式伪造声明。

2 个答案:

答案 0 :(得分:4)

您可以拥有Web.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>

答案 1 :(得分: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,但实现此目的的唯一方法是以编程方式使用Service Management API,因为门户网站仅允许您为每个依赖方配置一个Realm / Return URL值。

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