Я скачал WIF Extensions для SAML2 несколько дней назад и экспериментировал с ними.Образцы в загрузке используют приложение WebForms, и я пытаюсь выяснить, как их использовать в MVC3.
В настоящее время я могу выполнить аутентификацию на примере поставщика удостоверений, который поставляется вместе с загрузкой, с помощью этого:
Saml2AuthenticationModule.Current.SignIn(
"~/sign-on/saml2/success", "urn:samples:identityprovider");
У меня есть метод действия по маршруту / URL-адресу входа в систему / saml2 / success, и когда поток приложения достигает его, Thread.CurrentPrincipal.Identity
действительно является экземпляром IClaimsIdentity
.Хотя Identity.IsAuthenticated
равно true, Identity.Name
- пустая строка.(Это будет проблематично в нашем приложении, которое до сих пор использовало FormsAuthentication и полагалось на Identity.Name
для разрешения учетной записи пользователя в БД.)
Я также вижу, что в этом файле есть 4 новых кукиpoint:
- FedId
- FedAuth
- FedAuth1
- [четвертое имя cookie - это GUID, меняется для каждого SSO]
На данный момент я склонен удалить эти 4 куки и использовать претензии NameIdentifier
, чтобы создать новую учетную запись в нашем приложении (если она еще не существует), а затем использовать FormsAuthentication для написания куки .ASPXAUTH для пользователя.,
Первый партнерский IdP, с которым мы будем интегрироваться, использует Shibboleth, и они еще не реализуют SingleLogOut.Поэтому я предполагаю, что следующее, когда мы начнем тестировать эту интеграцию, не окажет никакого влияния:
Saml2AuthenticationModule.Current.SignOut("~/sign-off/saml2/success");
Таким образом, ручное удаление 4 файлов cookie - единственный способ вернуть Identity.IsAuthenticated
обратноложное значение.
Я поступаю неправильно?Есть ли какие-либо последствия уничтожения IClaimsIdentity после его использования и передачи в FormsAuthentication, которые я не рассматриваю?