#asp.net-mvc #azure #claims-based-identity #acs
#asp.net-mvc #azure #идентификация на основе утверждений #acs
Вопрос:
Служба ACS Azure довольно приятна, и мне нравится все то волшебство, на которое она способна, но я хочу немного меньше волшебства для своего веб-приложения (MVC). Если вы посмотрите на примеры кода в CodePlex, достаточно просто вызвать службу и получить список поставщиков входа в систему в формате JSON с конечной точки, подобной этой:
https://.accesscontrol.windows.net/v2/metadata/IdentityProviders.js?protocol=wsfederationamp;realm=http://localhost:7070/amp;version=1.0amp;callback=?
Из результирующего JSON вы можете отобразить некоторые ссылки на поставщиков, и как только вы разберетесь с этими логинами, они отправят вас обратно через ACS, и ACS отправит post с результирующим токеном на любую конечную точку, которую вы настроили на портале Azure.
Мой вопрос в том, что мне делать с этим жетоном? Я не хочу использовать «магию» WIF, которая создает наборы IPrincipal, а что нет. Я просто не хочу связываться с тем, что у меня уже есть в приложении.
Ответ №1:
Вы бы сделали именно то, что WIF делает с токеном. Вы анализируете его после расшифровки токена SAML. Вы можете ознакомиться со спецификацией токена SAML здесь. Я бы рекомендовал использовать WIF, потому что синтаксический анализ SAML не для слабонервных. Вам нужно будет проанализировать все утверждения, а затем решить, что с ними делать в ваших приложениях. WIF делает это, создавая IClaimsPincipal и устанавливая утверждения для IClaimsIdentity.
Комментарии:
1. Я понял это, но разве вам не нужно проверять содержимое токена у надежного поставщика (в данном случае ACS)?
2. Да, вам пришлось бы подтвердить с помощью сертификата, что вызов поступил из ACS. Вы получите сертификат, который сможете использовать для проверки токена.
Ответ №2:
Я написал сообщение в блоге, описывающее решение для людей, которые хотят использовать возможности WIF, но не хотят переводить все свое приложение на основе утверждений. Это должно дать вам представление о том, как вы можете подойти к ситуации: http://goo.gl/J8WZe
В конечном счете, я расширил классы модуля WIF и добавил некоторые переопределения, чтобы заменить волшебные методы, которые мне не были нужны.
Я не тестировал это, но другая вещь, которую вы можете сделать, это подключиться к рабочему процессу WIF, зарегистрировавшись для различных событий, которые он предоставляет.