我正在计划用于Web应用程序的API。客户端是由其他主机提供的SPA Web应用程序。通过电子邮件,密码(带有Argon2的SRP)和2FA对用户进行身份验证。为了简单起见,让我们要求所有用户都拥有2FA。
我想介绍一个多层会话模型,其中对每个API端点的访问都基于具有适当的身份验证级别。是的,使用术语认证级别,而不是授权级别。这个问题不是关于如何通过API实现RBAC。这个问题是关于能够在粒度级别上确保自用户首次登录以来对用户的访问没有被盗。
示例-不是真实的用例,而是来自例如像GitHub这样的网站-在会话类型的定义下方指定。
从最低认证级别到最高认证级别的会话类型:
LoginSession
OneTimeSession
api/get-repository-details
PasswordSession
api/edit-repository-settings
TwoFactorSession
PasswordSession
(并输入2FA数据)api/add-repository-collaborator
OneTimeSession
TwoFactorSession
api/transfer-organization-ownership
Click here for a summary illustration of the different authentication levels.
是否可以使用OAuth 2.0或OpenID Connect这样的定义明确的行业标准来实现上述目的?