C# 如何使用ServiceStack'发布和使用JWT;JwtAuthProvider
看看for ServiceStack,很多JWT功能似乎都是现成的。然而,我真的需要看一些工作示例。我在ServiceStack的示例目录中找不到任何 我想看到的是一个示例代码,其中显示:C# 如何使用ServiceStack'发布和使用JWT;JwtAuthProvider,c#,servicestack,jwt,C#,servicestack,Jwt,看看for ServiceStack,很多JWT功能似乎都是现成的。然而,我真的需要看一些工作示例。我在ServiceStack的示例目录中找不到任何 我想看到的是一个示例代码,其中显示: 如何发出带有一些声明的令牌 如何解码令牌并检查声明 只是使用一些“Hello world”服务。有没有人有一些代码显示这一点,或者知道在哪里查找 理想情况下,签名将使用RSA,但现在这并不是那么重要 谢谢。JWT AuthProvider是根据用户会话发布JWT令牌的提供者。您可以在令牌中添加自己的元数据,并
谢谢。JWT AuthProvider是根据用户会话发布JWT令牌的提供者。您可以在令牌中添加自己的元数据,并使用检查 在这两个AngularJS示例中,在用户成功通过OAuth提供商身份验证后,只需调用
/session to token
,例如:
$http.post("/session-to-token");
这会将其当前经过身份验证的会话转换为JWT令牌,用于将来的后续请求
类似地,JWT也用于其中,其中使用将Github OAuth访问令牌机密嵌入JWT令牌,然后使用PopulateSessionFilter
从JWT令牌中提取该密钥,并将其填充回用户会话:
appHost.Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] {
new GithubAuthProvider(appHost.AppSettings),
//Use JWT so sessions survive across AppDomain restarts, redeployments, etc
new JwtAuthProvider(appHost.AppSettings)
{
CreatePayloadFilter = (payload, session) =>
{
var githubAuth = session.ProviderOAuthAccess.Safe()
.FirstOrDefault(x => x.Provider == "github");
payload["ats"] = githubAuth != null
? githubAuth.AccessTokenSecret : null;
},
PopulateSessionFilter = (session, obj, req) =>
{
session.ProviderOAuthAccess = new List<IAuthTokens>
{
new AuthTokens { Provider = "github", AccessTokenSecret = obj["ats"] }
};
}
},
}));
对于其他示例,您可以查看在代码中手动创建JWT令牌的示例。非常好,只是为了确保-我必须手动创建一个传递JWT的路由和方法,对吗?并使用RequestFilterAttribute进行验证,例如?您是否有一些示例演示如何验证authHeader?@Werner JWT AuthProvider本身提供了mythz,同样令人敬畏,并由您的代码保存。非常感谢。
fetch("/session-to-token", { method:"POST", credentials:"include" });