我使用此代码对我的WCF服务进行身份验证:
proxy.ClientCredentials.UserName.UserName = "test";
proxy.ClientCredentials.UserName.Password = "pass";
有没有办法从我的WCF服务代码的方法中访问此信息? (我对使用的密码不感兴趣,更多的是用于审计目的的用户名。)
我正在尝试确定调用方法的用户的身份,而不更改方法signiture以包含其他参数。
答案 0 :(得分:4)
您可以像这样检索来电者的用户名:
ServiceSecurityContext ssc = ServiceSecurityContext.Current;
if (!ssc.IsAnonymous && ssc.PrimaryIdentity != null)
{
string userName = ServiceSecurityContext.Current.PrimaryIdentity.Name;
}
PrimaryIdentity
将包含“普通”IIdentity,并且包含身份对象类携带的所有字段(如IsAuthenticated等)。
马克
答案 1 :(得分:3)
您是否尝试过调查ServiceSecurityContext?