如何在WCF调用的服务端获取用户名和密码?

Fil*_*yen 6 .net wcf wcf-security

当我使用以下代码在客户端提供凭据时:

myChannelFactory.Credentials.UserName.UserName = "username";
myChannelFactory.Credentials.UserName.Password = "password";
Run Code Online (Sandbox Code Playgroud)

然后在服务器端,我看到这些凭据可用

operationContext.IncomingMessageHeaders[1]
Run Code Online (Sandbox Code Playgroud)

但是有没有更方便的方法来获取UserName和密码?我所看到的OperationContext只是混乱的属性和无类型列表,我无法找到任何表明我可以得到它的东西.

cas*_*One 3

您可以使用类的静态属性Current获取正在调用的操作的电流。ServiceSecurityContextServiceSecurityContext

然后,您可以使用该PrimaryIdentity属性来获取具有传入凭据的用户身份。

但是,它不会(也不应该)暴露密码。如果您确实需要密码,那么您将必须下拉到消息级别并检查标头,如您所见。