Azure ACS с сервером ADFS

У нас есть сценарий, в котором у нас есть одно приложение, к которому будет осуществляться доступ из нашей организации, а также доступ из внешней организации. Мы будем размещать это веб-приложение в лазурном цвете. Я использую MVC 5 с промежуточным программным обеспечением Owin WSFederation. Я могу подключиться к своему локальному серверу ADFS, и он работает должным образом.

           app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = "https://localhost:44321/",
                MetadataAddress = "https://sso2.xxxxx.com/FederationMetadata/2007-06/FederationMetadata.xml"
            });

Когда я использую ACS в качестве основной STS и настраиваю наш сервер ADFS в качестве IDP, он направляется на правильную страницу входа в ADFS, но после аутентификации я получаю эту ошибку

ID4037: ключ, необходимый для проверки подписи, не может быть определен из следующего идентификатора ключа безопасности 'SecurityKeyIdentifier (IsReadOnly = False, Count = 1, Clause [0] = X509RawDataKeyIdentifierClause (RawData = MIIC4DCCAc ... Убедитесь, что SecurityTokenResolver заполнен требуемым ключом.

           app.UseWsFederationAuthentication(
            new WsFederationAuthenticationOptions
            {
                Wtrealm = "https://localhost:44321/",
                MetadataAddress = "https://xxxxxxxx.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml"
            });

Я чувствую, что это проблема, потому что федеративные метаданные содержат ключ для подписи, а поскольку промежуточное программное обеспечение owin имеет только метаданные из ACS, подписывающую сторону невозможно определить.

Мысли?


person TSJ    schedule 23.01.2015    source источник


Ответы (1)


Настроена ли область в ACS?

Если бы я реализовывал это, я бы, вероятно, использовал ADFS вместо ACS для моего обнаружения в домашней области, потому что ACS выходит из строя.

Я бы настроил Azure в качестве дополнительного поставщика утверждений в ADFS, и мое приложение использовало бы только ADFS.

Вы также получаете немного больше контроля над тем, как выглядят страницы HRD.

person Jamie    schedule 03.02.2015
comment
Область настраивается в ACS, я думаю, проблема в том, что когда токен возвращается от одного из IDP, ключ токена подписи был определен в XML метаданных. Приложение указывает на XML-файл метаданных ACS, поэтому ему не известен фактический ключ подписи IDP. - person TSJ; 04.02.2015
comment
Idp предоставит ACS токен, который ACS будет использовать. Затем ACS выдаст новый токен, и этот токен будет подписан сертификатом ACS. Во время загрузки приложения OWIN должен получить метаданные из ACS и иметь всю необходимую информацию, включая ключ. Вы должны использовать что-то вроде HTTPFox, чтобы точно отслеживать, что делает ваш браузер. - person Jamie; 05.02.2015
comment
IDP перенаправляет непосредственно в приложение, а не обратно в ACS. Я принял ваше предложение и просто использовал ADFS и настроил поставщика утверждений, но, конечно, у меня такая же проблема с IDP, определенным в поставщике утверждений. Кажется, мне не хватает шага, на котором поставщик утверждений отправляет токен обратно в ADFS для ADFS, чтобы перераспределить токен в приложение. - person TSJ; 06.02.2015
comment
Похоже, что конечная точка в ACS неверна. Измените его на youradfsfqdn.com/adfs/ls. - person Jamie; 07.02.2015