UseIdentityServerBearerTokenAuthentication如何验证JWT令牌(使用本地模式)

时间:2016-04-25 15:06:29

标签: jwt identityserver3

我的应用程序中有以下代码,比如WebApp1:

    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
        {

            Authority = "IdentityServerPath",
            RequiredScopes = new[] { "write", "role", "all_claims" },
            ValidationMode = ValidationMode.Local,
        });

调用者/客户端应用程序将JWT令牌传递给WebApp1。 WebApp1如何知道JWT令牌有效? WebApp1是否需要知道JWT令牌的公钥?如果不是如何通过WebApp1验证JWT的签名?请注意,我将ValidationMode用作本地,因此WebApp1不会联系IdentityServer来验证JWT令牌。

1 个答案:

答案 0 :(得分:3)

对于“本地”选项,UseIdentityServerBearerTokenAuthentication使用发现文档(https://openid.net/specs/openid-connect-discovery-1_0.html)动态下载验证JWT所需的签名材料。

“验证端点”的另一个选项使用自定义令牌验证端点(https://identityserver.github.io/Documentation/docsv2/endpoints/accessTokenValidation.html),或者如果配置了客户端ID和密码,则标准OAuth2自省(https://tools.ietf.org/html/rfc7662)端点为用于验证令牌(https://identityserver.github.io/Documentation/docsv2/endpoints/introspection.html)。

“both”的最后一个选项将根据提交给Web API的传入访问令牌的一些启发式动态地确定上述两种方法中的哪一种。