我有一些问题要同时为servicestack工作2 auth提供程序。 我正在使用: JWT令牌 - 允许用户使用JWT令牌进行身份验证我是我的用户获得正确的身份验证。
现在我还想使用 API密钥 - 允许用户通过API密钥进行身份验证,以便为少数外部第三方用户提供访问权限。
当我配置我的两个用户时,JWT Tokens的身份验证已经完成了。
这是我的配置AuthProvider配置:
IAuthProvider[] providers = new IAuthProvider[]
{
new JwtAuthProviderReader(this.AppSettings)
{
HashAlgorithm = "RS256",
PrivateKeyXml = this.AppSettings.GetString("TokenPrivateKeyXml"),
PublicKeyXml = this.AppSettings.GetString("TokenPublicKeyXml"),
RequireSecureConnection = this.AppSettings.Get<bool>("TokenUseHttps"),
EncryptPayload = this.AppSettings.Get<bool>("TokenEncryptPayload"),
PopulateSessionFilter = (session, obj, req) =>
{
ApplicationUserSession customSession = session as ApplicationUserSession;
if (customSession != null)
{
customSession.TimeZoneName = obj["TimeZoneName"];
customSession.Type = (FbEnums.UserType) (obj["UserType"].ToInt());
if (Guid.TryParse(obj["RefIdGuid"], out Guid result))
{
customSession.RefIdGuid = result;
}
}
},
},
new ApiKeyAuthProvider(AppSettings)
{
RequireSecureConnection = false
}
};
我正在用JwtAuth打造令牌。仍然看起来servicestack不接受我的令牌作为有效会话,因为现在每当我这样做时:
var session = httpReq.GetSession();
session.IsAuthenticated - &gt;总是假的
如果我从配置中删除了 ApiKeyAuthProvider ,那么来自JwtAuth的令牌再次正常工作。
如何让两个提供者一起工作并告诉servicestack tham一些用户将使用JwtAuth和其他人ApiKeyAuth?
答案 0 :(得分:1)
您需要拨打需要身份验证的服务,例如具有[Authenticate]
属性,以便为{JWT和API Key AuthProviders等IAuthWithRequest
提供程序触发预身份验证。