
** 版本 **
mimic-13.2.6
原理
RGW认证机制中涉及的类分为两类,Strategy类和Engine类。
Strategy(认证策略)
- 通过
Strategy::add_engine向Strategy注册Engine,注册过程中需要指定Control Control包括REQUISITE、SUFFICIENT、FALLBACK
REQUISITE表示这个Engine是一个必要条件,若一个注册的Engine返回失败,则立即终止Strategy的认证过程,并且不再对其它注册的Engine进行认证;
SUFFICIENT表示这个Engine是一个充要条件,若一个注册的Engine返回成功,则Strategy完成。然而一个Engine的失败,不会终止整个Strategy,直到所有Engine都返回失败;
FALLBACK与SUFFICIENT类似,所有注册的Engine返回失败,返回result_t::deny(reason = -EACCES);
具体可见strategy_handle_rejected、strategy_handle_denied、strategy_handle_granted三个方法。- 一个Strategy可以包含多个Strategy和Engine。当验证过程遇到Strategy时,会进行递归调用,直到Engine返回验证结果。
- 认证的入口为
Strategy::apply,由Strategy::apply调用Strategy的authenticate方法开始逐层递归认证。
Engine(认证引擎)
- Engine处理具体的认证请求,分为
S3AnonymousEngine、LDAPEngine、LocalEngine等 - Engine的认证状态包括
DENIED、GRANTED、REJECTED
DENIED没有REJECTED那么强烈的认证失败;
GRANTED认证成功;
REJECTED认证失败,不需要再尝试其它Engine了;