5

当我查看 SAS 日志时,有 4 个不同的变量可以获取用户:

 _METAPERSON
 _METAUSER
 _SECUREUSERNAME
 _USERNAME

当我检查日志时,当我执行该过程时,所有 4 个变量都具有相同的值。所以我建立了一个进程来检查某些特定用户的 _Metauser,这样只有我想要的用户才能做某事。但是我的一个同事有一个问题,变量中不是他调用进程时为他存储的用户名,而是用户名@上下文。在其他 3 个变量中,只为他存储了用户名,所以也许我可以更改为其中一个。我不能使用 Metauser,因为对于某些人来说,用户名后面可能有一个 @Context。

不,我有问题,要使用哪个变量?4个变量有什么区别?使用哪个,以确保我只(并且总是)获得纯用户名,无论用户从哪里以及哪个程序/版本调用进程?

  • 目前我使用 Sas 9.3 并通过 webservice 运行进程
  • 我现在切换到 SECUREUSERNAME,但我不确定这是否会给其他用户带来问题,目前只有 3 个使用此过程,但很快会有更多
  • 我们的授权概念是基于元数据的,所以我想也许我应该使用 _Metaperson ...
4

3 回答 3

4

_SECUREUSERNAME宏变量是在应用程序服务器执行存储过程时创建的_SECUREUSERNAME 的值包含客户端身份,如果 _USERNAME 尚未包含值,则此值将写入 _USERNAME 宏变量。在大多数情况下,_SECUREUSERNAME 的值将与 _USERNAME 相同

_USERNAME指定从 Web 客户端身份验证获得的用户名的值。

_METAPERSON指定与 _METAUSER 登录变量关联的人员元数据名称。此变量的值可以是 UNKNOWN。客户端不能修改此变量。

_METAUSER指定用于连接元数据服务器的登录用户名。客户端不能修改此变量。

您的问题没有简单的答案,因为这取决于您的设置。您的用户是否必须使用 Metaserver 登录?您的代码是否始终使用 WebService 访问?用户 ID,它们是什么,它们是来自 AD 的 ID?是否启用了单点登录 (SSO)?SAS 上的 ID 是如何配置的?人们是否使用受信任的用户进行连接?

问候, 瓦西里

于 2015-07-30T14:40:03.287 回答
1

我正在使用 _METAUSER。现在,我们的系统设置了 SSO,因此用户名始终没有“@”。我也在没有 SSO 的情况下使用它,但后来我不得不使用 %scan(&_METAUSER,1,@) 来剥离 @context 部分。

于 2015-07-31T11:59:00.327 回答
1

通过在存储过程会话中进行测试,使用 SSO 的 9.2 (windows) 环境:

操作系统用户名(在我的情况下,我的 Windows ID)

  • _METAUSER(使用操作系统登录登录时,例如使用 SSO,请参阅接受答案中的@Vasilij Nevlev 评论)
  • _SECUREUSERNAME

SAS 用户名(在元数据中)

  • _METAPERSON -指定与 _METAUSER 登录变量关联的人员元数据名称。 不知道这怎么可能是未知的,因为 SMC 不会让您输入空白值..(匿名网络用户是 webanon)
  • _USERNAME - 绝对是用户名,因为您可以将其与 URL 中的 _password 一起使用以绕过 SAS 登录屏幕。
于 2016-01-05T16:56:25.250 回答