virtual AuthAuthorizer *build_authorizer(uint32_t service_id) = 0;
virtual void validate_tickets() = 0;
+ virtual bool need_tickets() = 0;
};
tickets.validate_tickets(want, need);
}
+bool CephxClientHandler::need_tickets()
+{
+ validate_tickets();
+ return (need != 0);
+}
+
AuthAuthorizer *build_authorizer(uint32_t service_id);
void validate_tickets();
-
+ bool need_tickets();
};
#endif
::decode(ticket, indata);
dout(10) << "verify_service_ticket_reply service " << ceph_entity_type_name(service_id)
<< " secret_id " << ticket.secret_id
- << " session_key " << msg_a.session_key << dendl;
+ << " session_key " << msg_a.session_key
+ << " validity=" << msg_a.validity << dendl;
session_key = msg_a.session_key;
has_key_flag = true;
return true;
int MonClient::_check_auth_rotating()
{
+ if (state == MC_STATE_HAVE_SESSION && auth && auth->need_tickets()) {
+ MAuth *m = new MAuth;
+ m->protocol = auth->get_protocol();
+ auth->build_request(m->auth_payload);
+ _send_mon_message(m);
+ }
+
if (!g_keyring.need_rotating_secrets())
return 0;