** 版本 **
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了;