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

时间:2015-07-30 13:18:06

标签: sas sas-metadata

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

 _METAPERSON
 _METAUSER
 _SECUREUSERNAME
 _USERNAME

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

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

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

3 个答案:

答案 0 :(得分:4)

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

相同

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

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

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

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

此致 瓦西里

答案 1 :(得分:1)

我正在使用_METAUSER。现在,我们的系统使用SSO进行设置,因此用户名始终没有" @"。我也没有使用SSO,但后来我不得不使用%scan(& _METAUSER,1,@)来删除@context部分。

答案 2 :(得分:1)

在Stored Process会话中测试,使用SSO的9.2(windows)环境:

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

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

SAS用户名(在元数据中)

  • _METAPERSON - 指定人员元数据名称 与...有关 _METAUSER登录变量。不知道如何知道这一点,因为SMC不允许您输入空白值..(匿名网络用户是webanon)
  • _USERNAME - 绝对是用户名,因为您可以在URL中使用此用户名和_password来绕过SAS登录屏幕。