Пользователь хранимого процесса, какую переменную использовать?

Когда я заглядываю в журнал SAS, есть 4 разные переменные, чтобы захватить пользователя:

 _METAPERSON
 _METAUSER
 _SECUREUSERNAME
 _USERNAME

Когда я проверяю журнал, все 4 переменные имеют одинаковое значение при выполнении процесса. Поэтому я создал процесс, который проверил _Metauser для какого-то конкретного пользователя, так что только пользователи, которых я хотел, могли что-то сделать. Но у моего коллеги была проблема в том, что в переменной было не имя пользователя, сохраненное для него при вызове процесса, а имя пользователя @Context. В остальных 3 переменных для него хранилось только имя пользователя, так что, возможно, я смогу перейти на одну из них. Я не могу использовать Metauser, потому что для некоторых людей после имени пользователя может быть @Context.

Нет, у меня проблема, какую переменную использовать? В чем разница между 4 переменными? Что использовать, чтобы быть уверенным, что я только (и всегда) получаю чистое имя пользователя, независимо от того, из какой и какой программы / версии пользователь вызывает процесс?

  • На данный момент я использую Sas 9.3 и запускаю процесс через веб-сервис
  • Я перешел на SECUREUSERNAME на данный момент, но я не уверен, что это может создать проблемы для других пользователей, на данный момент только 3 работают с этим процессом, но скоро будет намного больше
  • Наша концепция авторизации основана на метаданных, поэтому я думаю, что мне следует использовать _Metaperson...

3 ответа

Решение

Макропеременная _SECUREUSERNAME создается, когда сервер приложений выполняет сохраненный процесс. Значение _SECUREUSERNAME содержит идентификатор клиента, и это значение будет записано в макропеременную _USERNAME, если _USERNAME еще не содержит значение. В большинстве случаев значение _SECUREUSERNAME будет таким же, как _USERNAME

_USERNAME Указывает значение для имени пользователя, полученного при аутентификации веб-клиента.

_METAPERSON Указывает имя метаданных Person, связанное с переменной входа в систему _METAUSER. Значение этой переменной может быть НЕИЗВЕСТНО. Эта переменная не может быть изменена клиентом.

_METAUSER Указывает имя пользователя для входа в систему, используемое для подключения к серверу метаданных. Эта переменная не может быть изменена клиентом.

Нет простого ответа на ваш вопрос, потому что это зависит от вашей настройки. Должны ли ваши пользователи входить в систему с помощью Metaserver? Доступ к вашему коду всегда осуществляется через WebService? Идентификаторы пользователей, что это, они идентификаторы из AD? Включен ли единый вход (SSO)? Как идентификаторы настроены на SAS? Люди используют доверенных пользователей для подключения?

С уважением, Василий

Из тестирования в сеансе Stored Process, среда 9.2 (windows) с SSO:

Имя пользователя ОС (в моем случае, мой идентификатор Windows)

  • _METAUSER (при входе с помощью входа в ОС, например, с помощью единого входа, см. Комментарий @Vasilij Nevlev в принятом ответе)
  • _SECUREUSERNAME

Имя пользователя SAS (в метаданных)

  • _METAPERSON - указывает имя метаданных человека, связанное с переменной входа в систему _METAUSER. Не уверен, как это может быть неизвестно, так как SMC не позволит вам ввести пустое значение.. (анонимный веб-пользователь - webanon)
  • _USERNAME - определенно имя пользователя, поскольку вы можете использовать его вместе с _password в URL, чтобы обойти экран входа в систему SAS.

Я использую _METAUSER. Теперь наши системы настроены на единый вход, поэтому имя пользователя всегда без "@". Я также использовал его без единого входа, но затем мне пришлось использовать%scan(&_METAUSER,1,@), чтобы удалить часть @context.

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