gpt4 book ai didi

c# - 如何使用 ServiceStack 的 JwtAuthProvider 发布和消费 JWT

转载 作者:行者123 更新时间:2023-11-30 16:46:52 27 4
gpt4 key购买 nike

查看 JwtAuthProvider documentation对于 ServiceStack,似乎开箱即用地提供了很多 JWT 功能。但是我真的需要看一些工作示例。我在 ServiceStack 的示例目录中找不到任何内容。

我希望看到的是显示以下内容的示例代码:

  1. 如何发行带有某些声明的 token 。
  2. 如何解码 token 并检查声明。

只是使用一些“Hello world”服务。有没有人有一些代码显示这个或知道在哪里看?

理想情况下,签名会使用 RSA,但现在这并不重要......

谢谢。

最佳答案

JWT AuthProvider 是发布它根据用户 session 填充的 JWT token 的东西。您可以在 token 中添加自己的元数据并使用 CreatePayloadFilter and PopulateSessionFilter 检查它.

JWT is enabled在 AngularJS http://techstacks.io 中例如,在用户成功通过其 OAuth 提供程序进行身份验证后,只需调用 /session-to-token,例如:

$http.post("/session-to-token");

这会将他们当前经过身份验证的 session 转换为 JWT token ,用于将来的后续请求。

同样,JWT 也用于 http://gistlyn.com它使用 Customized JwtAuthProvider将 Github OAuth 访问 token secret 嵌入到 JWT token 中,然后使用 PopulateSessionFilter 从 JWT token 中提取它并将其填充回用户 session :

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 使用与 TechStacks 类似的方法来使用 JWT token by calling /session-to-token在用户使用 JavaScript's new fetch API 通过 Github OAuth 进行身份验证后

fetch("/session-to-token", { method:"POST", credentials:"include" });

JWT Stateless Auth Tests

有关其他示例,您可以查看 JWT RSA Tests which uses CreateJwtPayload其中显示了在代码中手动创建 JWT token 的示例。

关于c# - 如何使用 ServiceStack 的 JwtAuthProvider 发布和消费 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40109578/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com