修改后的OAuth令牌仍然可以成功地进行身份验证/授权

修改后的OAuth令牌仍然可以成功地进行身份验证/授权,oauth,Oauth,使用Owin和OAuth,我注意到如果修改令牌的最后一个字符,仍然可以成功地获得身份验证/授权 我使用的是C WebAPI应用程序,但我不知道这是否适用于OAuth。这可能是故意的,但对我来说似乎是奇怪的行为,所以我很好奇为什么会发生这种情况 要复制这种行为: 在Visual Studio中,创建新项目并选择“ASP.NET Web应用程序”作为模板。 选择“Web API”模板,并选择“个人用户帐户”作为身份验证类型。 构建项目。 使用REST客户端,将内容类型为application/jso

使用Owin和OAuth,我注意到如果修改令牌的最后一个字符,仍然可以成功地获得身份验证/授权

我使用的是C WebAPI应用程序,但我不知道这是否适用于OAuth。这可能是故意的,但对我来说似乎是奇怪的行为,所以我很好奇为什么会发生这种情况

要复制这种行为:

在Visual Studio中,创建新项目并选择“ASP.NET Web应用程序”作为模板。 选择“Web API”模板,并选择“个人用户帐户”作为身份验证类型。 构建项目。 使用REST客户端,将内容类型为application/json的头和以下主体发布到*:

{ 用户名:test, 密码:密码, 确认密码:密码 }

使用REST客户端,在没有标题和以下正文的情况下发布到*:

授权类型=密码&用户名=测试&密码=密码

使用REST客户端,使用Authorization:Bearer xxx头获取*,其中xxx是您在上一个请求中生成的访问令牌。这个请求应该得到授权,您应该得到200个响应

再次发出相同的GET请求,但这次修改授权头值的最后一个字符,将其增加1。例如,如果最后一个字符是a,则将其更改为b;如果是1,则将其更改为2,以此类推。请求仍将成功。 *相应地更改端口

-用于保护文件中包含的信息的数据格式 访问令牌。如果应用程序未提供默认数据 保护提供程序取决于主机服务器。上的SystemWeb主机 IIS将使用ASP.NET计算机密钥数据保护,以及HttpListener和 其他自托管服务器将使用DPAPI数据保护


由于以这种方式设置项目将在IIS Express下运行,因此令牌受MachineKey API的保护。我无法找到加密值的确切数据格式的描述,但从以前的密码学工作来看,我希望最后可能会有填充。此填充将不受令牌签名的保护,但这并不重要,因为它只是被剥离并丢弃。请注意,更改的范围是有限的,因此我希望只能修改最后一个字节的最后几位。

这听起来像是一个可能的解释!谢谢你提供更多的细节。