存储过程的用户,使用哪个变量?

kl7*_*l78 5 sas sas-metadata

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

 _METAPERSON
 _METAUSER
 _SECUREUSERNAME
 _USERNAME
Run Code Online (Sandbox Code Playgroud)

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

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

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

Vas*_*lev 4

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

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

_METAPERSON指定与 _METAUSER 登录变量关联的人员元数据名称。该变量的值可能是未知的。客户端无法修改此变量。

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

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

问候, 瓦西里