WebAPI:授权or/and认证

Web API: authorization or/and authentication

我创建了 asp.net 网络 api 项目。我需要添加授权 or/and 身份验证。我已经阅读了很多关于 OAuth、SAML、JWT、HMAC 等的文章,每次我看到作者强调 OAuth 不是身份验证,您需要将 authN 与 authZ 区分开来。我有点迷糊,因为我不明白:

  1. 当我需要使用身份验证(SSO,login/password)和授权(OAuth,令牌)时 API?
  2. HMAC、JWT是授权还是鉴权?因为它们已签名,我可以将用户 ID 添加到此令牌中,就像用户标识符一样使用
  3. authN 工作流程和 authZ 工作流程之间的真正区别是什么?

OAuth 也可用于通过资源所有者授予 对用户进行身份验证(即客户端获得访问权限token 提供 user+password 凭据)。

生成的 access token 是您应该调用的 authorization,因为它将包含描述权限、权限掩码或角色的声明等信息(这取决于您在解决方案中实施的授权方案)。

A JWT(JSON Web 令牌)只是访问令牌和任何其他相关信息的 JSON 表示。 JWT是一些认证结果的内容,可以用来对一些资源进行授权。由于 JWT 包含一个 访问令牌 ,如果您使用基本授权,您将添加一个 Authorization header 根据您的要求:Authorization: Bearer [your access token]