Можно ли получить претензии ACS без редактирования web.config? - PullRequest
7 голосов
/ 28 февраля 2012

Можно ли настроить URL-адрес области, типы утверждений и т. Д. Для Azure ACS без редактирования файла web.config? Можете ли вы как-то настроить эти обязательные элементы программно?

EDIT: В частности, я хочу избавиться от этого:

<federatedAuthentication>
    <wsFederation passiveRedirectEnabled="true" issuer="https://mynamespace.accesscontrol.windows.net/v2/wsfederation" realm="http://localhost:81/" requireHttps="false" />
</federatedAuthentication>

По сути, я не хочу, чтобы область определялась в веб-конфигурации, а скорее где-то в коде. Я попытался переопределить ClaimsAuthenticationManager и закомментировать части кода, связанного с FederatedAuthentication. Мой переопределенный код аутентификации ударил, но он не содержит никаких претензий. Я предполагаю, что это потому, что FederatedAuthentication является посредником, который выполняет свою собственную аутентификацию, прежде чем он доберется до переопределенного ClaimsAuthenticationManager в обычном режиме. Есть ли способ переопределить часть FederatedAuthentication подобным образом? Или в переопределенный метод проверки подлинности передается информация, которую я могу использовать для выполнения своей собственной проверки подлинности?

Ответы [ 2 ]

9 голосов
/ 02 марта 2012

Чтобы удалить эту строку xml из веб-конфигурации, я создал свой собственный WSFederationAuthenticationModule, переопределяющий старый, например:

public class CustomWSFederationAuthenticationModule : WSFederationAuthenticationModule
{
    protected override void InitializePropertiesFromConfiguration(string serviceName)
    {
        this.Realm = "http://localhost:81/";
        this.Issuer = "https://acsnamespace.accesscontrol.windows.net/v2/wsfederation";
        this.RequireHttps = false;
        this.PassiveRedirectEnabled = true;
    }
}

И важная часть web.config:

<modules runAllManagedModulesForAllRequests="true">
  <add name="WSFederationAuthenticationModule" type="CustomModuleLocation.CustomWSFederationAuthenticationModule, CustomModuleLocation" preCondition="managedHandler"/>
  <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
</modules>

Также полностью удален раздел federatedAuthentication в XML.

1 голос
/ 29 февраля 2012

Да, FedUtil делает это.Это утилита, поставляемая с Windows Identity Foundation (WIF) SDK, и вы можете вызвать ее из Visual Studio.

http://msdn.microsoft.com/en-us/library/ee517285.aspx

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=4451

РЕДАКТИРОВАТЬ: Iвозможно, неправильно понял ваш вопрос.FedUtil - это утилита, которая настраивает ваш web.config для вас.Если вместо этого вы хотите настроить свое приложение в коде, это также возможно.Документация WIF на MSDN должна продемонстрировать, как это сделать:

http://msdn.microsoft.com/en-us/library/ee766446.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...