配置Azure ACS的最佳方法是什么,以便当我在开发结构中本地运行时,我仍然可以进行身份验证?
我只想配置一次并能够在本地开发并发布到azure而无需更改配置。我甚至愿意在本地开发时不使用Federated Auth,只要我能以某种方式伪造声明。
答案 0 :(得分:4)
您可以拥有Web.Config
和Web.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覆盖它(你的那个)在门户网站上看到。)