客户端提供ClientCredentials.UserName.UserName 和 ClientCredentials.UserName.Password 
在调用服务时如何获取ClientCredentials.UserName.UserName?之前好像在MSDN看到过用 xxSupportxx 什么的可以取到,但是找不到那篇文档了,也不知道是不是看错了,现在怎么搜都搜不到

解决方案 »

  1.   

    找到了OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name结帖
      

  2.   

    没啥用,那只是系统登录用户。对于大多数用户来说系统登录用户不是administrator就是lenvo(品牌机装机默认用户,比如联想的lenvo)
      

  3.   

    我用的UserName认证方式,获取到的是用户输入的用户名~~另外联想是Lenovo吧
      

  4.   

    现在要面向互联网编程(谁还以为只对小办公室局域网编程?),并且要跨(客户端)平台,例如手机 hybrid 客户端访问,所以第一需要设计开发通用的 http 服务而不是 WCF、WebService,第二就是要允许匿名访问 web 服务、然后用业务协议来授权客户端登录,而不是假设客户端都是 windows 桌面客户端。
      

  5.   

    这个用户名是操作系统登录用户名,如果不是域模式,那么你取到的用户名没意义windows登录3种方式
    本机用户:本机用户可以随便设置,并不和你系统挂钩,而且系统管理员装机直接用ghost,默认账户都一样,大多数人也都直接使用默认账户登录,所以你取一堆一摸一样的默认账户名,没啥意义。域用户:域用户受制与域控制器,你可以用域用户名,这个有意义。但是如果人家用本机用户登录,你也没办法。微软账户:在办公环境下,我想也没啥人用个人微软账户登录,虽然有云同步等功能。但是这是个人私有,你总不想说,别人用你的机子问你要你个人的微软账户密码,或者你离职后,别人还能通过你绑定的账户信息,获得你个人云,个人邮箱的私有信息吧
      

  6.   

    WCF提供例如Windows 身份验证、 X.509 证书和用户名和密码的多种不同的身份验证机制。
    我用的是【自定义用户名/密码验证】方式,用户名是由客户端获取的用户输入,而您说的应该是Windows 身份验证
    可能我表述不清吧,看下这个就知道我要做的是什么了,感谢回复
    https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/feature-details/authentication-in-wcf
    https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/samples/user-name-password-validator