我想为我的网络API创建自定义身份验证机制(没有第三方库,如owin,oauth等。)。
我该如何开发它?我检查了一些关于Web API身份验证方案的帖子,但我也很困惑。
根据我的情况;用户对web服务的请求,首先是服务检查令牌和UDID详细信息,如果没有这些bot值,则用户强制认证,如果用户认证服务返回此UDID的令牌。
正如您在上面的场景中所看到的,开发基于令牌的休息服务的最佳实践和真实方法是什么。
答案 0 :(得分:1)
实际上,您可以根据要支持的内容和安全级别考虑几种方法。请记住,REST是无状态的,您不应该在服务器端保持身份验证状态。这意味着您应该为每个调用提供身份验证提示并验证发出请求的用户。
以下是可能的方法:
HTTP提供基本身份验证。您可以在HTTP标头Authorization
中提供使用Base 64编码的用户名/密码。在执行请求之前,服务器应用程序获取授权提示并使用后端的提示检查它们(即事情是否匹配)
实际上基本身份验证基本上不出所料;-)我的意思是密码/密钥总是在请求中发送。密码/密钥很容易读取,因为标头Authorization
的内容是用Base64编码的,并且秘密令牌始终有效。没有内置的验证和过期支持。更进一步,您可以使用临时令牌。为此,您的RESTful应用程序需要提供两个额外的资源:
最后一级包括在实际执行请求时向第二种方法添加请求签名。这将在执行请求时在客户端完成。
对于最后两个,OAuth2可以是解决方案,因为它提供了设计/实现此类方法的标准。您可以注意到,您不必使用第三方库来执行此操作。
我最近写了一篇博客文章,详细描述了这些方法。请参阅此链接http://templth.wordpress.com/2015/01/05/implementing-authentication-with-tokens-for-restful-applications/。
希望有所帮助。 亨利