Настройка 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-адресом возврата (тот, который вы видите на портале).

Другие вопросы по тегам