Hun*_*tte 4 asp.net oauth access-token asp.net-web-api asp.net-identity
使用 ASP.NET Identity、WebAPI 和 UseOAuthBearerTokens
public void Configuration(IAppBuilder app)
{
app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new CustomProvider(...))
});
}
Run Code Online (Sandbox Code Playgroud)
API 根据有效的登录请求返回令牌字符串。令牌可以正常工作,并允许最终用户访问 API 的授权部分,但是,如果令牌字符串的最后一个字符发生更改,它有时仍然可以工作。看来这只是字符串的最后一个字符的情况,并且只有某些值/更改仍然允许令牌有效。为什么会这样呢?这是代码的问题还是身份的一部分?
例如:从服务器返回的令牌是
mdC0XvL4VBucyMPD-OvQ0KA5vW1Q8OHdF4OtqET5hEFI20uaOXbX4JlzTwkLRmWUr-4cIzQf1adXx5DbnXltuwcSjiX1NEY5DqhS3c9GyU1c2VqLAOUYj4-BraaheNsCPvReZqvT__NsObpziKX98SY4gSUGDBVigVONdvlpRunzPZlIeJh99jBqzavuo4qSEElAlBNvNFts95aN7otO5-bNiDNl1t_CP9PQWcTIipMNe_No2J8wGbmIvEWCBAhN3Ts6lvmFpHSA02up1YykZoDZa0TZY7QOt187aP9-7kN
Run Code Online (Sandbox Code Playgroud)
您可以将 N(位于令牌字符串末尾)更改为 O 或 P,但它仍然允许用户访问 API
小智 5
对了,这是我删除前一个答案后的另一个答案。
\n\n来自 Microsoft 的更了解 JWT 的人反馈了以下内容。
\n\n\n\n\n当然 \xe2\x80\x93 所以 JWT 分为三部分,由 \'.\' 字符分隔
\n\n
\n 如果我对它进行 base64 解码\n ,它会说:{"typ":"JWT","alg":"HS256"}\n {"unique_name":"x@yz","sub":"x@yz","iss":" https:// xyz .azurewebsites.net/ ","aud":"任意","exp":1506047645,"nbf":1505442845} \xd1\x8fE\xee\x95\x997Sa(\n P\xc6\x99Aa)\xca\x973 ?G[
\n\n第一部分是算法类型,中间是声明,最后是密钥 他们的密钥 \xe2\x80\x93 如果你使用它\n并且它仍然解码\xe2\,那么 \xe2\x80\x99 并不重要\n x80\xa6 更改最后一个字符必须有未使用的\n 字符。
\n\n你可以通过这样做\xe2\x80\x99t 来伪造声明\xe2\x80\xa6 真正重要的是\n 如果你可以更改声明\xe2\x80\x93 更改两个中间\n 之间的任何内容。\xe2 \x80\x99s 然后它将停止工作。
\n
我的结论是,更改密钥不会影响令牌的安全性/完整性。解码令牌的系统要么成功解码,要么根本不解码,无论是否被篡改。您将无法劫持会话,也不代表存在漏洞。
\n| 归档时间: |
|
| 查看次数: |
1015 次 |
| 最近记录: |