У нас есть сценарий, в котором у нас есть одно приложение, которое будет доступно из нашей организации, а также доступ из внешней организации. Мы будем размещать это веб-приложение в лазури. Я использую MVC 5 с промежуточным ПО Owin WSFederation. Я могу подключиться к моему локальному серверу ADFS и работает, как ожидалось.Azure ACS с сервером 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, пункт [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 подписывающий не может быть определена.
Мысли?
Realm сконфигурирован в ACS, я думаю, проблема в том, что когда маркер возвращается с одного из IDP, ключ маркера подписи был определен в метаданных xml. Приложение указывает на метаданные ACS метаданных, поэтому у него нет никакого знания фактического ключа подписи IDP. – TSJ
Idp предоставит токен ACS, который будет потреблять ACS. Затем ACS выдаст новый токен, и этот токен будет подписан сертификатом ACS. При загрузке приложения OWIN должен сбрасывать метаданные из ACS и иметь всю необходимую информацию, включая ключ. Вы должны использовать что-то вроде HTTPFox, чтобы точно отслеживать, что делает ваш браузер. – Jamie
IDP перенаправляет непосредственно приложение, а не обратно в ACS, я принял ваше предложение и просто использовал ADFS и настроил поставщик претензий, но, конечно, у меня такая же проблема с IDP, определенным в поставщике претензий. Кажется, мне не хватает шага, по которому поставщик требований отправляет токен обратно в ADFS для ADFS, чтобы перераспределять токен в приложение. – TSJ