当前位置: 首页 > 编程语言 > C#

WCF用户名认证:我可以在自定义ServiceAuthorizationManager中获取用户名吗?

时间:2023-04-10 16:11:55 C#

WCF用户名认证:我可以在自定义ServiceAuthorizationManager中获取用户名吗?我有一个使用自定义ServiceAuthorizationManager的WCF服务。设置自定义身份验证管理器来处理Windows和Forms身份验证。但是,如果我连接到设置了用户名身份验证的客户端,我似乎无法在任何地方找到用户名。客户端代码如下所示:this.ClientCredentials.UserName.UserName="user";this.ClientCredentials.UserName.Password="通过";这个。打开();这个.MyMethod();//我的实际合约方法this.Close();然后在服务器上,我有我的自定义身份验证管理器:publicsealedclassAppAuthorizationManager:ServiceAuthorizationManager{publicoverrideboolCheckAccess(OperationContextoperationContext,refMessagemessage){//想在这里检查用户/密码...}}这可能吗?用户/密码应该在任何地方都可用吗?或者我还必须添加自定义UsernamePasswordValidator吗?更新:所以我添加了一个自定义UserNamePasswordValidator和一个IAuthorizationPolicy。但是,这不是您设置委托人的地方-那将在IAuthorizationPolicy的Evaluate方法中,它可能看起来像:boolIAuthorizationPolicy.Evaluate(EvaluationContextevaluationContext,refobjectstate){IListidents;对象标识对象;if(evaluationContext.Properties.TryGetValue("Identities",outidentitiesObject)&&(idents=identitiesObjectasIList)!=null){foreach(IIdentityidentinidents){if(ident.IsAuthenticated&&ident.AuthenticationType==TrustedAuthType){}evaluationContext.Properties["Principal"]=//TODO我们的委托人returntrue;}}}if(!evaluationContext.Properties.ContainsKey("Principal")){evaluationContext.Properties["Principal"]=//TODOanon}returnfalse;}(其中TrustedAuthType是我们的密码验证器的名称)有了这个,线程的主体将被设置,我们可以识别自己(并使用基于角色的安全性等)以上是C#学习教程:WCFUserNameauthentication:I可以自定义ServiceAuthorizationManager中获取的用户名吗?分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系如管理员删除,如有转载,请注明出处: