gpt4 book ai didi

c# - 使用带有 header 数据的 IAuthorizationPolicy 和 UserNamePasswordValidator 登录?

转载 作者:太空狗 更新时间:2023-10-29 23:44:10 25 4
gpt4 key购买 nike

我有一个 WCF 服务,我在其中使用自定义 UserNamePasswordValidator 来验证用户。

public override void Validate(string userName, string password)
{
LoginHelper loginHelper = new LoginHelper();
loginHelper.ValidateUserRegularLogin(userName, password);
}

完成后,IAuthorizationPolicy.Evaluate 被触发,这是我将主体设置为自定义用户上下文的地方,如下所示:

evaluationContext.Properties["Principal"] = userContext;

问题是我需要两件事来获得正确的用户上下文,这是用户名和 header 中的值。

我知道我可以使用消息检查器来获取标题数据,如下所示:

public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
IntegrationHeader integrationHeader;
LoginHandler loginHandler;
UserContextOnService userContext = null;

if (request.Headers.Action == null || request.Headers.Action.ToString().Length < 1)
return null;

foreach (var header in request.Headers)
{
if (header.Namespace == "ns" && header.Name == "SecurityToken")
{

return null;
}
}

throw new SecurityTokenException("Unknown username or invalid password");
}

但我需要在 Evaluate 方法中获取此信息,以便进行正确的登录(设置主体)。是否可以?如果是这样,怎么办?有什么选择?

附言。这将通过调用完成,因此无法使用特定的登录方法。

已解决:

我最终得到了这个:

integrationHeader = OperationContext.Current.IncomingMessageHeaders.GetHeader<IntegrationCertificateHeader>(header.Name, header.Namespace);

最佳答案

你能尝试用这个访问标题数据吗?

WebOperationContext.Current.IncomingRequest.Headers 

关于c# - 使用带有 header 数据的 IAuthorizationPolicy 和 UserNamePasswordValidator 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35562441/

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