gpt4 book ai didi

c# - 从 UserNamePasswordValidator 到 Principal 的变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:55 24 4
gpt4 key购买 nike

我有一个带有 netTcp 绑定(bind)(消息 - 用户名)的 WCF 服务。

我实现了我自己的 UserNamePasswordValidator.Validate 方法,在这个方法中我检查了凭据并在那里我得到了一个变量,稍后我需要在我的 customPrincipal 中使用它。

我现在的问题是,如何将这个变量从我的 UserNamePasswordValidator 获取到 customPrincipal?

编辑

让它工作,我必须实现以下自定义的东西:

  • 自定义服务凭证
  • ServiceCredentialsSecurityTokenManager
  • 用户名SecurityTokenAuthenticator
  • 用户名密码验证器
  • -> 使用带返回值的自定义验证方法
  • 授权政策

最佳答案

UserNamePasswordValidator 仅用于检查凭据。您可能需要 System.IdentityModel.Policy.IAuthorizationPolicy。查看 this question 的答案.

更新:问题是 OperationContextUserNamePasswordValidator 中尚不可用,因此您不能使用它来将上下文变量传递给您可以实例化自定义主体 (IAuthorizationPolicy) 的位置。因此,我将创建一个以用户名为键的静态字典(如果我没看错的话,值是您的身份验证方法)可用于自定义 UserNamePasswordValidatorIAuthorizationPolicy 实现。如果您使用的是 .NET 4,ConcurrentDictionary 是正确的选择,因为您需要处理并发问题。所以你的验证器将插入/更新用户名/auth-method 对到字典中,你的 IAuthorizationPolicy 类将通过用户名获取它(你可以从 EvaluationContext 获得它)并重新 -实例化主体。不幸的是,我无法想象更优雅的解决方案(如果有的话)。

关于c# - 从 UserNamePasswordValidator 到 Principal 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7963742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com