XRootD
XrdMacaroonsAuthz.hh
Go to the documentation of this file.
1 
4 #include "XrdSys/XrdSysError.hh"
5 
6 
7 class XrdSysError;
8 
9 namespace Macaroons
10 {
11 
12 class Authz final : public XrdAccAuthorize, public XrdSciTokensHelper
13 {
14 public:
15  Authz(XrdSysLogger *lp, const char *parms, XrdAccAuthorize *chain);
16 
17  virtual ~Authz() {}
18 
19  virtual XrdAccPrivs Access(const XrdSecEntity *Entity,
20  const char *path,
21  const Access_Operation oper,
22  XrdOucEnv *env) override;
23 
24  // Do a minimal validation that this is a non-expired token; used
25  // for session tokens.
26  virtual bool Validate(const char *token,
27  std::string &emsg,
28  long long *expT,
29  XrdSecEntity *entP) override;
30 
31  virtual int Audit(const int accok, const XrdSecEntity *Entity,
32  const char *path, const Access_Operation oper,
33  XrdOucEnv *Env) override
34  {
35  return 0;
36  }
37 
38  virtual int Test(const XrdAccPrivs priv,
39  const Access_Operation oper) override
40  {
41  return 0;
42  }
43 
44  // Macaroons don't have a concept off an "issuers"; return an empty
45  // list.
46  virtual Issuers IssuerList() override {return Issuers();}
47 
48 private:
49  XrdAccPrivs OnMissing(const XrdSecEntity *Entity,
50  const char *path,
51  const Access_Operation oper,
52  XrdOucEnv *env);
53 
54  ssize_t m_max_duration;
55  XrdAccAuthorize *m_chain;
56  XrdSysError m_log;
57  std::string m_secret;
58  std::string m_location;
59  int m_authz_behavior;
60 };
61 
62 }
Access_Operation
The following are supported operations.
XrdAccPrivs
Definition: XrdAccPrivs.hh:39
int emsg(int rc, char *msg)
virtual bool Validate(const char *token, std::string &emsg, long long *expT, XrdSecEntity *entP) override
virtual int Audit(const int accok, const XrdSecEntity *Entity, const char *path, const Access_Operation oper, XrdOucEnv *Env) override
Authz(XrdSysLogger *lp, const char *parms, XrdAccAuthorize *chain)
virtual int Test(const XrdAccPrivs priv, const Access_Operation oper) override
virtual XrdAccPrivs Access(const XrdSecEntity *Entity, const char *path, const Access_Operation oper, XrdOucEnv *env) override
virtual Issuers IssuerList() override
std::vector< ValidIssuer > Issuers