处理多种会话类型/身份验证级别:是否支持任何标准?

时间:2019-06-08 12:20:35

标签: session authorization api-design session-management

我正在计划用于Web应用程序的API。客户端是由其他主机提供的SPA Web应用程序。通过电子邮件,密码(带有Argon2的SRP)和2FA对用户进行身份验证。为了简单起见,让我们要求所有用户都拥有2FA。

我想介绍一个多层会话模型,其中对每个API端点的访问都基于具有适当的身份验证级别。是的,使用术语认证级别,而不是授权级别。这个问题不是关于如何通过API实现RBAC。这个问题是关于能够在粒度级别上确保自用户首次登录以来对用户的访问没有被盗。

示例-不是真实的用例,而是来自例如像GitHub这样的网站-在会话类型的定义下方指定。

从最低认证级别到最高认证级别的会话类型:

  1. LoginSession
    • 含义:用户过去曾登录过某处
    • 访问级别:最低
    • 有效期:60分钟
    • 可以通过以下方式获取:OneTimeSession
    • 自动续订:使用旧会话
    • 需要此级别的示例端点:api/get-repository-details
  2. PasswordSession
    • 含义:用户使用密码进行了身份验证
    • 访问级别:高
    • 有效期:10分钟
    • 可以通过以下方式获取:-(输入密码)
    • 自动续订:—(需要再次输入密码并播放SRP握手才能获取)
    • 需要此级别的示例端点:api/edit-repository-settings
  3. TwoFactorSession
    • 含义:用户使用2FA进行了身份验证
    • 访问级别:更高
    • 有效期:10分钟
    • 可以通过以下方式获取:PasswordSession(并输入2FA数据)
    • 自动续订:—(需要再次输入2FA)
    • 需要此级别的示例端点:api/add-repository-collaborator
  4. OneTimeSession
    • 含义:为一个指定的端点呼叫请求一次授予
    • 访问级别:最高
    • 有效性:一个端点呼叫
    • 可以通过以下方式获取:TwoFactorSession
    • 自动续订:—
    • 需要此级别的示例端点:api/transfer-organization-ownership

Click here for a summary illustration of the different authentication levels.

是否可以使用OAuth 2.0或OpenID Connect这样的定义明确的行业标准来实现上述目的?

0 个答案:

没有答案