如何手动检查 json web token 是不是有效?

     2023-04-13     134

关键词:

【中文标题】如何手动检查 json web token 是不是有效?【英文标题】:How to manually check whether json web token is valid?如何手动检查 json web token 是否有效? 【发布时间】:2019-02-11 12:25:01 【问题描述】:

我想确定 JWT Token 在[AllowAnonymouse]] 端点中是否有效

编辑

我有一个端点,任何人(授权和未经授权的人)都可以访问,然后:如果该用户有 http 授权标头或者他在 cookie 中有令牌并且他的令牌有效,则将他重定向到 X,否则重定向到 Y

我的想法的伪代码:

[Route("Passport/")]
public IActionResult Passport()

    if (this.User.Identity.IsAuthenticated)
    or pseudocode:
    if (tokenIsValid(getJWTTokenFromHeader()));
    
        return RedirectToAction("Resources");
    
    else
    
        return RedirectToAction("Login");
    

我想过这样的事情:

[Route("Passport/")]
public IActionResult Passport()

    var token = ExtractTokenFromHeader();
    
    HttpClient client = new HttpClient();

    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue
    ("application/json"));

    client.DefaultRequestHeaders.Add("Authorization", $"Bearer token");
    
    var get = client.GetAsync($"http://localhost/verifyToken").Result;

    var responseBody = await get.Content.ReadAsStringAsync().ConfigureAwait(false);

    switch (get.StatusCode)
    
        case HttpStatusCode.Unauthorized:
            return RedirectToAction("Login");
        case HttpStatusCode.OK:
            return RedirectToAction("Resources");
        default:
            return RedirectToAction(...);
    

端点 verifyToken 有一个 [Authorize] 属性并且只返回 Unauthorized(默认)或 OK(来自代码)

【问题讨论】:

您能否详细说明,您的问题不清楚 我有一个端点,任何人(授权和未经授权的人)都可以访问,然后:如果该用户有 http 授权标头或者他在 cookie 中有令牌并且他的令牌有效,则将他重定向到 X 否则到Y 使用策略而不是在控制器方法中检查令牌:docs.microsoft.com/en-us/aspnet/core/security/authorization/… @aguafrommars 听起来不错,但我仍然需要确定令牌在HandleRequirement 中是否有效? 那么只使用if (this.User.Identity.IsAuthenticated)有什么问题? 【参考方案1】:

你可以试试下面的代码

private static bool ValidateJWTToken(string token, out string username)   
    username = null;  
    var simplePrinciple = JwtManager.GetPrincipal(token);  
    var identity = simplePrinciple.Identity as ClaimsIdentity;  
    if (identity == null) return false;  
    if (!identity.IsAuthenticated) return false; 

【讨论】:

用户对象是不是应该存储在 JSON Web Token 中?

】用户对象是不是应该存储在JSONWebToken中?【英文标题】:ShoulduserobjectbestoredinJSONWebToken?用户对象是否应该存储在JSONWebToken中?【发布时间】:2014-10-1823:46:40【问题描述】:我的问题很简单我们应该还是不应该将用户对象存储在... 查看详情

Json Web Token (JWT) 究竟是如何减少人在循环攻击的?

】JsonWebToken(JWT)究竟是如何减少人在循环攻击的?【英文标题】:HowexactlydoesJsonWebToken(JWT)reducetheman-in-theloopattack?【发布时间】:2016-10-2708:56:40【问题描述】:我正在尝试了解JWT,并在网上浏览各种资源。我找到了显示如何检查JWT... 查看详情

JSON Web Token 仅适用于具有 Eloquent 模型的 Laravel

...了一个错误,说我的模型不是Eloquent模型的实例。所以我检查了供 查看详情

检查 Token 是不是已经被批准 python

】检查Token是不是已经被批准python【英文标题】:CheckingifTokenisalreadyapprovedpython检查Token是否已经被批准python【发布时间】:2021-12-2720:10:22【问题描述】:我有此代码用于检查令牌是否已被批准。问题是,即使我输入了一个批准的... 查看详情

JWT(JSON Web Token)自动延长过期时间

...基于JWT的身份验证。但是既然在token中设置了过期时间,是不是可以自动延长呢?如果用户在此期间积极使用该应用程序,我不希望用户在每X分钟后登录一次。那将是一个巨大的用户体验失 查看详情

JSON Web Token Auth Service - 检查单独服务器上的状态以保护路由。节点JS

】JSONWebTokenAuthService-检查单独服务器上的状态以保护路由。节点JS【英文标题】:JSONWebTokenAuthService-checkingstatusonseparateservertoprotectroutes.NodeJS【发布时间】:2015-04-0622:38:04【问题描述】:对于我目前正在进行的一个项目,我正在使... 查看详情

java - 如何延长过期时间java json web token?

】java-如何延长过期时间javajsonwebtoken?【英文标题】:Howtoextendexpirationtimejavajsonwebtoken?【发布时间】:2015-06-2623:19:31【问题描述】:我尝试使用jjwtlibrary在Java中创建JsonWebToken但是当我尝试延长过期时间时遇到问题。我用下面的代... 查看详情

laraveljwt检查是不是携带token

参考技术A携带的。Jsonwebtoken(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点(SSO)场景。JWT的声明一般被用来在身份提供者和服务... 查看详情

laraveljwt检查是不是携带token

参考技术A携带的。Jsonwebtoken(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点(SSO)场景。JWT的声明一般被用来在身份提供者和服务... 查看详情

JSON Web Token 如何比 cookie/session 更安全?

】JSONWebToken如何比cookie/session更安全?【英文标题】:HowisJSONWebTokenmoresecurethancookie/session?【发布时间】:2016-12-1514:30:09【问题描述】:如何使用JSONWeb令牌比不透明会话令牌更安全?在这两种情况下,令牌首先发送到客户端,然... 查看详情

如何在不手动检查的情况下确定网站是不是使用 webassembly?

】如何在不手动检查的情况下确定网站是不是使用webassembly?【英文标题】:Howtofindoutifawebsiteuseswebassemblywithoutmanuallychecking?如何在不手动检查的情况下确定网站是否使用webassembly?【发布时间】:2020-05-2303:17:34【问题描述】:我... 查看详情

如何使用 JSON Web Token (JWT) Grant 进行文档签名 [关闭]

】如何使用JSONWebToken(JWT)Grant进行文档签名[关闭]【英文标题】:HowtouseJSONWebToken(JWT)Grantfordocusign[closed]【发布时间】:2020-11-0903:28:03【问题描述】:如何将JSONWeb令牌(JWT)授予用于文档签名访问令牌。请提供完整的代码示例(laravel... 查看详情

如何在 Unity 3d 中使用 JSON Web Token (JWT)?

】如何在Unity3d中使用JSONWebToken(JWT)?【英文标题】:HowtouseJSONWebToken(JWT)inUnity3d?【发布时间】:2015-09-2309:32:30【问题描述】:我正在尝试通过在Unity3D中使用JSONWeb令牌(JWT)来实现身份验证。我在google和GitHub上搜索了很多,没有发现... 查看详情

如何(盐和哈希)并在java中存储密码..然后检查密码是不是与用户的手动输入匹配

】如何(盐和哈希)并在java中存储密码..然后检查密码是不是与用户的手动输入匹配【英文标题】:Howto(saltandhash)andstoreapasswordinjava..Thencheckthepasswordifmatchestoauser\'smanualinput如何(盐和哈希)并在java中存储密码..然后检查密码是否... 查看详情

如何手动反序列化 JSON 并像 Web API 那样自动验证模型?

】如何手动反序列化JSON并像WebAPI那样自动验证模型?【英文标题】:HowtomanuallydeserializeJSONandvalidatemodellikeWebAPIdoesitautomatically?【发布时间】:2021-01-2421:07:43【问题描述】:将JSON发布到WebAPI时,不仅会自动反序列化,还可以使用... 查看详情

使用 REST 和 JSON Web Token 上传/下载文件

...布时间】:2017-10-1221:16:01【问题描述】:文件上传/下载如何在内部工作,是否需要多次请求和响应?我问这个问题是因为我使用SpringSecurity进行JSONWeb令牌(JWT)身份验证,如果文件上传/下载需要多个请求/响应,那么我应该如何使... 查看详情

json web token + img src

...的解决方案是在客户端上设置一个带有令牌值的cookie,而不是私有来访问公共路径。与在服务 查看详情

如何使用 python 将私钥编码为 RS256 格式的 JSON WEB TOKEN

】如何使用python将私钥编码为RS256格式的JSONWEBTOKEN【英文标题】:HowtoencodeprivatekeyasJSONWEBTOKENinRS256formatusingpython【发布时间】:2021-03-2805:45:47【问题描述】:嗯,我已经经历了很多问题,以及他们各自的答案,主要是代替私钥(... 查看详情