Настройка Azure ACS для локальной и производственной
Как лучше всего настроить Azure ACS, чтобы при локальном запуске в среде разработки я все еще мог проходить аутентификацию?
Я просто хочу настроить один раз и иметь возможность разрабатывать локально и публиковать в Azure без необходимости вносить изменения в конфигурацию. Я даже был бы открыт для того, чтобы не использовать Federated Auth при локальной разработке, если бы я мог каким-то образом подделать заявку.
2 ответа
Вы можете иметь из 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>
Самый простой способ - использовать преобразования конфигурации, как сказал Бхавеш, хотя опубликованный им файл 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.
Фактически вы можете настроить один RP для всех трех конфигураций, но единственный способ достичь этого - программно использовать API управления сервисами, поскольку портал позволяет вам настроить только одно значение URL области / возврата для каждой проверяющей стороны.
Обратите внимание, что если вы решите сделать это, вам нужно будет установить возвращаемый URL в вашем файле web.config (reply
атрибут), иначе ACS всегда будет перезаписывать его первым настроенным URL-адресом возврата (тот, который вы видите на портале).