servicestack,jwt,C#,servicestack,Jwt" /> servicestack,jwt,C#,servicestack,Jwt" />

C# 如何使用ServiceStack'发布和使用JWT;JwtAuthProvider

C# 如何使用ServiceStack'发布和使用JWT;JwtAuthProvider,c#,servicestack,jwt,C#,servicestack,Jwt,看看for ServiceStack,很多JWT功能似乎都是现成的。然而,我真的需要看一些工作示例。我在ServiceStack的示例目录中找不到任何 我想看到的是一个示例代码,其中显示: 如何发出带有一些声明的令牌 如何解码令牌并检查声明 只是使用一些“Hello world”服务。有没有人有一些代码显示这一点,或者知道在哪里查找 理想情况下,签名将使用RSA,但现在这并不是那么重要 谢谢。JWT AuthProvider是根据用户会话发布JWT令牌的提供者。您可以在令牌中添加自己的元数据,并

看看for ServiceStack,很多JWT功能似乎都是现成的。然而,我真的需要看一些工作示例。我在ServiceStack的示例目录中找不到任何

我想看到的是一个示例代码,其中显示:

  • 如何发出带有一些声明的令牌
  • 如何解码令牌并检查声明
  • 只是使用一些“Hello world”服务。有没有人有一些代码显示这一点,或者知道在哪里查找

    理想情况下,签名将使用RSA,但现在这并不是那么重要


    谢谢。

    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" });