Узнайте подробную информацию о сертификате 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 он работает хорошо.

С уважением

Другие вопросы по тегам