Узнайте подробную информацию о сертификате X.509, с которым вошел пользователь ERP
Я разрабатываю SAP Enterprise Service, которая позволяет пользователю входить в систему с помощью сертификата X.509. Внутренне, в настройке есть сопоставление между внешним идентификатором пользователя и внутренним именем пользователя ERP.
В моей логике мне нужно определить, вошел ли пользователь в систему с помощью обычной аутентификации (пользователь / пароль, технически все еще возможен) или с помощью сертификата. Я думаю, что могу справиться с этим, вызвав подпрограмму ядра (LOGIN_INFO).
Тем не менее, как я могу получить подробную информацию о сертификате, который пользователь использовал для входа в систему? Я хочу проверить, был ли сертификат выдан определенным центром сертификации.
Есть опыт?
1 ответ
Посмотрите на классы CL_HTTP_SECURITY_SESSION*. Фактически, класс CL_HTTP_SECURITY_SESSION_ADMIN имеет метод, который дает нам из таблицы SECURITY_CONTEXT метод входа в сеанс.
DATA: lt_sessions TYPE security_context_tab,
ls_session LIKE LINE OF lt_sessions.
lt_sessions = cl_http_security_session_admin=>list_security_session_contexts( ).
Есть поле AUTHNMETHODS, которое хранит метод auth в числовом формате: т.е. 8000 - это базовая аутентификация.
В том же классе есть метод: DECOMPOSE_AUTHNMETHODS_FIELD, который должен помочь вам получить метод auth.
Надеюсь, это поможет, я никогда не реализовывал это на Enterprise Service, поэтому я не уверен, что этот класс может быть полезным, но на некоторых прямых http-соединениях с SICF он работает хорошо.
С уважением