使用Owin和OAuth,我注意到如果修改令牌的最后一个字符,您仍然可以成功进行身份验证/授权。修改后的OAuth令牌仍然可以进行身份验证/授权
我正在使用C#WebAPI应用程序,但我不知道这是否适用于一般的OAuth。这可能是设计,但它似乎对我来说很奇怪,所以我很想知道为什么发生这种情况。
复制此行为:
- 在Visual Studio中创建一个新的项目,并选择 'ASP.NET Web应用程序' 作为模板。
- 选择'Web API'模板,并选择'Individual User Accounts'作为验证类型。
- 构建项目。
使用REST客户端,POST到http://localhost:23220/api/account/register *与
Content-Type: application/json
头和随动体:{ "UserName": "test", "Password": "password", "ConfirmPassword": "password" }
使用REST客户端,POST到http://localhost:23220/token *无标头和随动体:
grant_type=password&username=test&password=password
使用REST客户端,GET http://localhost:23220/api/values *用
Authorization: Bearer xxx
标头,其中xxx
是您在前一个请求中生成的访问令牌。这个请求应该被授权,你应该得到200响应。- 再犯同样的GET请求,但这次是以1递增它因此,举例来说,如果最后一个字符是
a
,将其更改为b
修改Authorization
头值的最后一个字符;如果是1
,请将其更改为2
等。请求仍然会成功。
* 相应地更改端口。
这听起来像是一个可能的解释!并感谢您的额外细节。 – Moo