Узнайте подробную информацию о сертификате X.509, с которым вошел пользователь ERP

Я разрабатываю SAP Enterprise Service, который позволяет пользователю входить в систему через сертификат X.509. Внутри в настройке есть сопоставление между внешним идентификатором пользователя и внутренним именем пользователя ERP.

В моей логике мне нужно определить, вошел ли пользователь через базовую аутентификацию (пользователь/пароль, технически все еще возможно) или через сертификат. Я думаю, что могу справиться с этим, вызвав подпрограмму ядра (LOGIN_INFO).

Однако как получить сведения о сертификате, который пользователь использовал для входа в систему? Я хочу проверить, был ли сертификат выдан определенным центром сертификации.

Здесь есть опыт?


person Emdee    schedule 28.04.2015    source источник


Ответы (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, в котором хранится метод аутентификации в числовом формате: т.е. 8000 — это базовая аутентификация.

В том же классе есть метод: DECOMPOSE_AUTHNMETHODS_FIELD, который должен помочь вам получить метод авторизации.

Надеюсь, это поможет, я никогда не реализовывал это в корпоративной службе, поэтому я не уверен, что этот класс может быть полезен, но на некоторых прямых http-соединениях с SICF он работает хорошо.

С уважением

person Enrique Genoves    schedule 06.05.2015