#itfoxtec-identity-saml2 #nemlogin
Вопрос:
Я реализую аутентификацию NemLog-in3 / OIOSAML 3 в своем веб-приложении .NET Core. До сих пор с большим успехом. У меня есть только один вопрос о проверке маркера безопасности при получении утверждения от IdP после аутентификации.
Когда я получаю утверждение от IdP, в ответе есть маркер безопасности с указанием даты и времени ValidFrom и ValidTo. Разница составляет 1 час, но в документации по тесту OIOSAML3 говорится, что утверждение «недействительно» и что ваш SP должен запретить пользователю входить в систему через 5 минут.
Вы не знаете, можно ли настроить допустимый период SecurityToken (установить его на 5 минут), возможно, при инициализации аутентификации SAML? Я знаю, что мог бы просто проверить ValidTo и добавить к нему 5 минут, но я бы предпочел, чтобы он работал динамически, со свойством ValidTo, если это возможно.
Ответ №1:
Conditions
Элементы NotBefore
и NotOnOrAfter
действительны в течение часа, что является правильным. Ограничение на вход в систему на 5 минут должно было быть в SubjectConfirmation
элементе NotOnOrAfter
. Это похоже на ошибку в NemLog-in3?
Ответ NemLog-in3 SAML 2.0 authn:
<Subject>
<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" SPNameQualifier="https://saml.itfoxtecidentitysaml2-public-dev.sample">
https://data.gov.dk/model/core/eid/professional/uuid/8e190635-4a9c-4748-91ed-24895f809647
</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="_29a72131-ab30-4429-b083-b18db2d6160e" NotOnOrAfter="2021-09-08T13:22:32.062Z" Recipient="https://localhost:44310/Auth/AssertionConsumerService"/>
</SubjectConfirmation>
</Subject>
<Conditions NotBefore="2021-09-08T12:22:31.843Z" NotOnOrAfter="2021-09-08T13:22:31.843Z">
<AudienceRestriction>
<Audience>
https://saml.itfoxtecidentitysaml2-public-dev.sample
</Audience>
</AudienceRestriction>
</Conditions>
Комментарии:
1. Я основал наше решение на вашем примере проекта TestWebAppCoreNemlogin3Sp, и когда я смотрю в ответе, который я получаю в конечной точке утверждения, я не могу найти подтверждение субъекта на объекте? Может быть, я ищу его не в том месте?
2. Я проверяю подтверждение субъекта не позже github.com/ITfoxtec/ITfoxtec. Identity.Saml2/blob/master/src/.. … Но нет свойства, позволяющего легко получить доступ к объекту подтверждения. Вы можете получить доступ к элементу так же, как и в методе ValidateAssertionExpiration.
3. Итак, вы хотите сказать мне, что это встроено в функциональность вашего пакета NuGet? Если я использую ваш метод «ReadSamlResponse» для чтения ответа
4. Он проверяется путем вызова метода Unbind, который вызовет исключение, если время неверно. Метод ReadSamlResponse считывает только ответ.
5. Ладно, я все понял. Кроме того, я действительно думаю, что в утверждении есть ошибка, так как дата и время, передаваемые в мой кэш символов, на самом деле являются всего лишь приблизительно датами и временем. UtcNow, так что все зарегистрированные просто немедленно истекают