【问题标题】:WCF4 REST APIkey question - pass information from ServiceAuthorizationManager to servicesWCF4 REST APIkey 问题 - 将信息从 ServiceAuthorizationManager 传递到服务
【发布时间】:2011-09-25 22:36:04
【问题描述】:

我想为我的 WCF4 REST API 实施 API 密钥身份验证解决方案。

我知道我需要创建一个类并从 ServiceAuthorizationManager 派生它并覆盖 CheckAccessCore 方法。我都明白了。

但是我想从 CheckAccessCore 做的是将内部信息从 CheckAccessCore 传递到我的服务实现类。我在进行 ApiKey 身份验证时查找的“ApiKeyID、权限、标志和其他详细信息”等信息。

这样我的服务内部可以在调用域逻辑时使用内部的 ApiKeyID。

我见过很多不同的方法,比如

operationContext.ServiceSecurityContext.AuthorizationContext.Properties["Principal"] = p;

System.Threading.Thread.CurrentPrincipal = principal;
HttpContext.Current.User = principal;

还有其他方式……

【问题讨论】:

  • 我有同样的问题,除了我使用的是 WCF 数据服务。你有没有找到一个好的答案?

标签: wcf restful-authentication api-key


【解决方案1】:

传递对象的另一种方法是将对象添加到 RequestMessage 对象的属性集合中。

IssuedToken Token = new IssuedToken() 
operationContext.RequestContext.RequestMessage.Properties.Add("NameOfObj",Token);

【讨论】:

  • 好的,你就是这么设置的,但是你怎么找回呢?据我所知,WebOperationContext.Current.IncomingRequest 没有属性。只有标题。
  • 我不认为 operationContext 可用于 REST。只是 WebOperationContext,它只有 HTTP 标头。
  • 我构建了 REST WCF 并使用上述技术将数据从我的 ServiceAuthorizationManager 传递到我的其他代码。
  • Victor,你介意刷新你的代码示例吗?我特别有兴趣了解您如何从主 .svc.cs 文件中的 WebGet 调用中检索对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 2017-02-09
  • 2017-04-21
相关资源
最近更新 更多