Пользователь хранимого процесса, какую переменную использовать?
Когда я заглядываю в журнал 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.