1

我想为我的 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;

和其他方式......

4

1 回答 1

0

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

IssuedToken Token = new IssuedToken() 
operationContext.RequestContext.RequestMessage.Properties.Add("NameOfObj",Token);
于 2011-09-15T04:02:45.970 回答