查看ServiceStack的JwtAuthProvider documentation,看起来很多JWT功能都是开箱即用的。但是我真的需要看一些有用的例子。我在ServiceStack的示例目录中找不到任何内容。
我希望看到的是一个示例代码,显示:
只使用一些" Hello world"服务。有没有人有一些显示这个或知道在哪里看的代码?
理想情况下,签名会使用RSA,但现在这并不重要......
感谢。
答案 0 :(得分:2)
JWT AuthProvider是根据用户会话发布它填充的JWT令牌的内容。您可以在令牌中添加自己的元数据,并使用CreatePayloadFilter and PopulateSessionFilter进行检查。
AngularJS JWT is enabled示例中的 http://techstacks.io只需在用户成功通过其OAuth提供程序进行身份验证后调用/session-to-token
,例如:
$http.post("/session-to-token");
这会将当前经过身份验证的会话转换为JWT令牌,并将其用于将来的后续请求。
同样JWT也用在http://gistlyn.com中,它使用Customized JwtAuthProvider将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"] }
};
}
},
}));
Gistlyn使用与TechStack类似的方法在用户使用by calling /session-to-token
对Github OAuth进行身份验证后使用JWT令牌JavaScript's new fetch APIfetch("/session-to-token", { method:"POST", credentials:"include" });
对于其他示例,您可以查看JWT RSA Tests which uses CreateJwtPayload,其中显示了在代码中手动创建JWT令牌的示例。