(这个问题可以看作是ServiceStack场景中关于OpenAuth与DotNetOpenAuth的这两篇StackOverflow帖子的后续内容:first和second)
据我所知,ServiceStack使用IAuthSession
来了解哪个用户已通过身份验证,但这似乎依赖于HTTP会话cookie。使用OAuth请求时,不存在此类Cookie。
问题:如果1)存在浏览器cookie,或者2)存在OAuth身份验证标头 Bearer ,我希望我的ServiceStack请求被视为已通过身份验证。我该怎么做?
我尝试了以下设置线程的身份验证,但它依赖于ASP.NET的HttpContext.Current.User
。
我也希望它能同时用于IIS托管和自托管方案......
var analyzer = new StandardAccessTokenAnalyzer((RSACryptoServiceProvider)signCert.PublicKey.Key, (RSACryptoServiceProvider)encryptCert.PrivateKey);
var resourceServer = new ResourceServer(analyzer);
var requestWrapper = new HttpRequestWrapper((HttpRequest)request.OriginalRequest);
var principal = resourceServer.GetPrincipal(requestWrapper, requiredScopes);
HttpContext.Current.User = principal;
感谢任何帮助。