Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET标识OAuth令牌字符串允许更改最后一个字符_Asp.net_Asp.net Web Api_Oauth_Asp.net Identity_Access Token - Fatal编程技术网

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

ASP.NET标识OAuth令牌字符串允许更改最后一个字符,asp.net,asp.net-web-api,oauth,asp.net-identity,access-token,Asp.net,Asp.net Web Api,Oauth,Asp.net Identity,Access Token,使用ASP.NET标识、WebAPI和UseAuthBearTokens public void Configuration(IAppBuilder app) { app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions { AllowInsecureHttp = true, TokenEndpointPath = new PathString(

使用ASP.NET标识、WebAPI和UseAuthBearTokens

public void Configuration(IAppBuilder app)
    {
        app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new CustomProvider(...))
        });
    }
API在有效登录请求时返回令牌字符串。令牌工作正常,并允许最终用户访问API的授权部分,但是,如果令牌字符串的最后一个字符被更改,它有时仍然工作。这似乎只是字符串的最后一个字符的情况,只有一些值/更改仍然允许令牌有效。为什么会这样?这是代码的问题还是身份的一部分

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

mdC0XvL4VBucyMPD-OvQ0KA5vW1Q8OHdF4OtqET5hEFI20uaOXbX4JlzTwkLRmWUr-4cIzQf1adXx5DbnXltuwcSjiX1NEY5DqhS3c9GyU1c2VqLAOUYj4-BraaheNsCPvReZqvT__NsObpziKX98SY4gSUGDBVigVONdvlpRunzPZlIeJh99jBqzavuo4qSEElAlBNvNFts95aN7otO5-bNiDNl1t_CP9PQWcTIipMNe_No2J8wGbmIvEWCBAhN3Ts6lvmFpHSA02up1YykZoDZa0TZY7QOt187aP9-7kN

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

Rightio,因此在删除我的上一个答案后,这里是另一个答案

微软的一些人对JWT有了更多的了解,并反馈如下

当然–所以JWT分为三部分,由“.”字符分隔
如果我解码 它会说:

{“类型”:“JWT”,“alg”:“HS256”} {“唯一名称”:x@y.z“,“sub”:”x@y.z“,”国际空间站“,”澳大利亚“:”任何“,”实验“:1506047645,“nbf”:1505442845}7Sa( PƙAa)ʗ3?g[

第一部分是算法类型,中间部分是声明,最后一部分是它们的密钥——不管你是否使用它 它仍然在解码…改变最后一个字符一定有一个未使用的字符 性格

你不能通过那样做来伪造这些声明…到底是什么 重要的是,如果你能改变这些主张,那么你可以在两种主张之间改变任何东西 两个中间点,然后它就会停止工作


我的结论是,更改密钥不会影响令牌的安全性/完整性。解码令牌的系统会成功或根本不会对其进行解码,无论是否进行篡改。您将无法劫持会话,也不表示存在漏洞。

在我看来,这确实增加了能够o猜测令牌,即劫持会话…但可能性仍然很小。此外,可以通过向令牌添加额外的熵使其变长来减轻这种可能性。(添加额外数据(实数或填充),使用不同的编码算法,等等)