gpt4 book ai didi

authentication - WCF REST RequestInterceptor 身份验证

转载 作者:行者123 更新时间:2023-12-04 21:25:45 25 4
gpt4 key购买 nike

我正在尝试在 WCF RequestInterceptor 中进行一些基本身份验证。我正在使用 this article作为开始。

我遇到的问题是拦截器和服务之间的通信。我试过的任何东西似乎都不起作用。到目前为止,我已经尝试过:

  • OperationContext.Current
  • requestContext.RequestMessage.Properties[HttpRequestMessageProperty.Name]["foo"] = value
  • HttpContext.Current.Request

  • 但是无论我设置什么,我似乎都无法在服务行为本身中访问它:
    [AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed )]
    [ServiceBehavior( InstanceContextMode = InstanceContextMode.Single )]
    public class AdvertiserService : ApiServiceBase<AdvertiserDataAccessor>, IAdvertiserService
    {
    [WebGet( UriTemplate = "" )]
    public List<Advertiser> GetAdvertisers()
    {
    var request = HttpContext.Current.Request;
    var headers = HttpContext.Current.Request.Headers;
    var p = HttpContext.Current.Request.Headers["Principal"];

    OperationContext ctx = OperationContext.Current;
    }
    }

    我的问题是:
  • 如何在拦截器和服务之间传递数据?
  • 是否有一种规范的方式在它们之间传递身份验证信息(注意,身份验证信息是数据库中的 UID,而不是 Windows 身份)?

  • 谢谢

    最佳答案

    您是否正在使用拦截器创建 SecureWebServiceHostFactory?

    public class SecureWebServiceHostFactory : ServiceHostFactory
    {
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
    WebServiceHost2 host = new WebServiceHost2(serviceType, true, baseAddresses);
    host.Interceptors.Add(new AuthenticationInterceptor());
    return host;
    }
    }

    我已经使用了那个例子并且它有效,仔细看看你的代码,你可能会遗漏一些东西。

    关于authentication - WCF REST RequestInterceptor 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3445296/

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