public:
virtual ~AuthClient() {}
+ /// Build an authentication request to begin the handshake
virtual int get_auth_request(
Connection *con,
AuthConnectionMeta *auth_meta,
uint32_t *method,
std::vector<uint32_t> *preferred_modes,
bufferlist *out) = 0;
+
+ /// Handle server's request to continue the handshake
virtual int handle_auth_reply_more(
Connection *con,
AuthConnectionMeta *auth_meta,
const bufferlist& bl,
bufferlist *reply) = 0;
+
+ /// Handle server's indication that authentication succeeded
virtual int handle_auth_done(
Connection *con,
AuthConnectionMeta *auth_meta,
const bufferlist& bl,
CryptoKey *session_key,
std::string *connection_secret) = 0;
+
+ /// Handle server's indication that the previous auth attempt failed
virtual int handle_auth_bad_method(
Connection *con,
AuthConnectionMeta *auth_meta,
AuthServer(CephContext *cct) : auth_registry(cct) {}
virtual ~AuthServer() {}
+ /// Get authentication methods and connection modes for the given peer type
virtual void get_supported_auth_methods(
int peer_type,
std::vector<uint32_t> *methods,
std::vector<uint32_t> *modes = nullptr) {
auth_registry.get_supported_methods(peer_type, methods, modes);
}
+
+ /// Get support connectino modes for the given peer type and auth method
virtual void get_supported_con_modes(
int peer_type,
uint32_t auth_method,
auth_registry.get_supported_modes(peer_type, auth_method, modes);
}
+ /// return an AuthAuthorizeHandler for hte given peer type and auth method
AuthAuthorizeHandler *get_auth_authorize_handler(
int peer_type,
int auth_method) {
return auth_registry.get_handler(peer_type, auth_method);
}
+ /// Handle an authentication request on an incoming connection
virtual int handle_auth_request(
Connection *con,
AuthConnectionMeta *auth_meta,
- bool more,
+ bool more, ///< true if this is not the first part of the handshake
uint32_t auth_method,
const bufferlist& bl,
bufferlist *reply) = 0;