Web services 我可以使用HTTP基本身份验证来验证web API中的应用程序和用户吗?
我为第三方应用程序(客户端)提供了一组公共web API供其使用。我想跟踪这些客户机如何使用我的API,所以我需要为这些客户机生成令牌。同时,我需要对真实用户进行身份验证,不同的用户可以看到相同资源的不同表示。我知道OAuth2可以解决我的问题,但它很复杂。我更喜欢对用户和应用程序使用HTTPs+基本身份验证,因此我将在HTTP头中为客户端和实际用户使用不同的属性。这是否合适?一般来说,基本身份验证不起作用,因为它需要所有请求的凭据(用户名/密码),而这不是您想要的 首先,让我们分析您的需求:Web services 我可以使用HTTP基本身份验证来验证web API中的应用程序和用户吗?,web-services,http,rest,authentication,Web Services,Http,Rest,Authentication,我为第三方应用程序(客户端)提供了一组公共web API供其使用。我想跟踪这些客户机如何使用我的API,所以我需要为这些客户机生成令牌。同时,我需要对真实用户进行身份验证,不同的用户可以看到相同资源的不同表示。我知道OAuth2可以解决我的问题,但它很复杂。我更喜欢对用户和应用程序使用HTTPs+基本身份验证,因此我将在HTTP头中为客户端和实际用户使用不同的属性。这是否合适?一般来说,基本身份验证不起作用,因为它需要所有请求的凭据(用户名/密码),而这不是您想要的 首先,让我们分析您的需求:
- 您希望最终用户能够访问您的服务
- 您希望授权的第三方应用程序能够访问其他最终用户数据(经用户批准)
- 您不希望第三方应用程序获得其他最终用户凭据
希望这有帮助 步骤1到8解释典型的OAuth工作流。为什么基本身份验证不能满足我的要求?请解释一下为什么基本身份验证不能满足我的需要?我是否可以首先向客户端颁发令牌(客户端和API提供程序之间的共享密钥,您可以将其视为基本身份验证中的密码),每当客户端使用API时,客户端都需要在HTTP头中提供该令牌。因此API提供者可以跟踪谁使用了API。Bargitta,是的,这是一个典型的OAuth工作流,因为您需要的是这样一个工作流程。:-)基本身份验证不符合您的要求,因为每个请求都需要在标题中使用用户名:密码,而且您不想将这个秘密“告诉”第三方,我相信!顺便说一下,您会看到一个“令牌”,在一个基本的经过身份验证的请求中表示用户。但这不是一个“令牌”,实际上这是用户名:密码的base64编码字符串,例如“user1:password”将被编码为“dXNlcjE6cGFzc3dvcmQ=”注意:编码不是加密,但它仍然是凭证的明文。通过您的
我可以先发出令牌吗(客户端和API提供程序之间的共享秘密,您可以将其视为基本身份验证中的密码)到客户端
您实际上还描述了OAuth工作流。注意:您提到的共享“令牌”是加密文本,而不是username:password的base64字符串,因此您无法将其放入基本身份验证中