首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET标识OAuth令牌字符串允许更改最后一个字符

ASP.NET标识OAuth令牌字符串允许更改最后一个字符
EN

Stack Overflow用户
提问于 2015-08-04 19:12:09
回答 1查看 891关注 0票数 4

使用ASP.NET标识、WebAPI和UseOAuthBearerTokens

代码语言:javascript
复制
public void Configuration(IAppBuilder app)
    {
        app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new CustomProvider(...))
        });
    }

API在有效的登录请求时返回一个令牌字符串。令牌工作正常,并允许最终用户访问API的授权部分,但是,如果令牌字符串的最终字符被更改,它有时仍然有效。似乎只有字符串的最后一个字符是这样的,只有一些值/更改仍然允许令牌有效。为什么是这种情况?这是代码的问题还是身份的一部分?

例如:从服务器返回的令牌是

代码语言:javascript
复制
mdC0XvL4VBucyMPD-OvQ0KA5vW1Q8OHdF4OtqET5hEFI20uaOXbX4JlzTwkLRmWUr-4cIzQf1adXx5DbnXltuwcSjiX1NEY5DqhS3c9GyU1c2VqLAOUYj4-BraaheNsCPvReZqvT__NsObpziKX98SY4gSUGDBVigVONdvlpRunzPZlIeJh99jBqzavuo4qSEElAlBNvNFts95aN7otO5-bNiDNl1t_CP9PQWcTIipMNe_No2J8wGbmIvEWCBAhN3Ts6lvmFpHSA02up1YykZoDZa0TZY7QOt187aP9-7kN

您可以将N(令牌字符串末尾)更改为O或P,它仍然允许用户访问API

EN

回答 1

Stack Overflow用户

发布于 2017-09-15 06:04:06

对了,这是我上一次删除后的另一个答案。

微软的一些人对JWT有更多的了解,并反馈了以下内容。

当然-所以JWT分为三个部分,用'.‘分隔。字符 如果我base64解码,它会说:{"typ":"JWT","alg":"HS256"} {"unique_name":"x@y.z","sub":"x@y.z","iss":"https://x-y-z.azurewebsites.net/","aud":"Any","exp":1506047645,“nbf”яE7Sa( PƙAa)ʗ3? 第一部分是算法类型,中间部分是声明,最后一部分是它们的密钥--如果您使用它,它仍然解码…,这并不重要。更改最后一个字符必须有一个未使用的字符。 你不能通过做…来伪造这些声明真正重要的是,如果你能改变这种说法--在中间两个中间改变任何东西,那么它就会停止工作。

我的理解是,更改密钥不会影响令牌的安全性/完整性。对令牌进行解码的系统要么成功地解码它,要么根本不进行任何篡改。您将无法劫持会话,也不表示该会话存在漏洞。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31817382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档