gluu
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.xdi.oxauth.service.ClientAuthorizationsService クラス
org.xdi.oxauth.service.ClientAuthorizationsService 連携図
Collaboration graph

公開メンバ関数

void addBranch (final String userInum)
 
boolean containsBranch (final String userInum)
 
void prepareBranch (final String userInum)
 
ClientAuthorizations findClientAuthorizations (String userInum, String clientId, boolean persistInLdap)
 
void add (String userInum, String clientId, Set< String > scopes, boolean persistInLdap)
 
String getBaseDnForClientAuthorizations (String oxId, String userInum)
 
String getBaseDnForClientAuthorizations (String userInum)
 

非公開メンバ関数

String getCacheKey (String userInum, String clientId)
 

非公開変数類

Logger log
 
PersistenceEntryManager ldapEntryManager
 
UserService userService
 
CacheService cacheService
 

静的非公開変数類

static final String CACHE_CLIENT_CUTHORIZATION = "ClientAuthorizationCache"
 

詳解

著者
Javier Rojas Blum
バージョン
January 17, 2018

関数詳解

◆ add()

void org.xdi.oxauth.service.ClientAuthorizationsService.add ( String  userInum,
String  clientId,
Set< String >  scopes,
boolean  persistInLdap 
)
inline
97  {
98  if (persistInLdap) {
99  // oxAuth #441 Pre-Authorization + Persist Authorizations... don't write anything
100  // If a client has pre-authorization=true, there is no point to create the entry under
101  // ou=clientAuthorizations it will negatively impact performance, grow the size of the
102  // ldap database, and serve no purpose.
103  prepareBranch(userInum);
104 
105  ClientAuthorizations clientAuthorizations = findClientAuthorizations(userInum, clientId, persistInLdap);
106 
107  if (clientAuthorizations == null) {
108  clientAuthorizations = new ClientAuthorizations();
109  clientAuthorizations.setId(UUID.randomUUID().toString());
110  clientAuthorizations.setClientId(clientId);
111  clientAuthorizations.setScopes(scopes.toArray(new String[scopes.size()]));
112  clientAuthorizations.setDn(getBaseDnForClientAuthorizations(clientAuthorizations.getId(), userInum));
113 
114  ldapEntryManager.persist(clientAuthorizations);
115  } else if (clientAuthorizations.getScopes() != null) {
116  Set<String> set = new HashSet<String>(scopes);
117  set.addAll(Arrays.asList(clientAuthorizations.getScopes()));
118  clientAuthorizations.setScopes(set.toArray(new String[set.size()]));
119 
120  ldapEntryManager.merge(clientAuthorizations);
121  }
122  } else {
123  // Put client authorization in cache. oxAuth #662.
124  ClientAuthorizations clientAuthorizations = findClientAuthorizations(userInum, clientId, persistInLdap);
125  String key = getCacheKey(userInum, clientId);
126 
127  if (clientAuthorizations == null) {
128  clientAuthorizations = new ClientAuthorizations();
129  clientAuthorizations.setId(UUID.randomUUID().toString());
130  clientAuthorizations.setClientId(clientId);
131  clientAuthorizations.setScopes(scopes.toArray(new String[scopes.size()]));
132  clientAuthorizations.setDn(getBaseDnForClientAuthorizations(clientAuthorizations.getId(), userInum));
133 
134  cacheService.put(CACHE_CLIENT_CUTHORIZATION, key, clientAuthorizations);
135  } else if (clientAuthorizations.getScopes() != null) {
136  Set<String> set = new HashSet<String>(scopes);
137  set.addAll(Arrays.asList(clientAuthorizations.getScopes()));
138  clientAuthorizations.setScopes(set.toArray(new String[set.size()]));
139 
140  cacheService.put(CACHE_CLIENT_CUTHORIZATION, key, clientAuthorizations);
141  }
142  }
143  }
static final String CACHE_CLIENT_CUTHORIZATION
Definition: ClientAuthorizationsService.java:47
String getBaseDnForClientAuthorizations(String oxId, String userInum)
Definition: ClientAuthorizationsService.java:145
CacheService cacheService
Definition: ClientAuthorizationsService.java:45
PersistenceEntryManager ldapEntryManager
Definition: ClientAuthorizationsService.java:39
String getCacheKey(String userInum, String clientId)
Definition: ClientAuthorizationsService.java:158
void prepareBranch(final String userInum)
Definition: ClientAuthorizationsService.java:61
ClientAuthorizations findClientAuthorizations(String userInum, String clientId, boolean persistInLdap)
Definition: ClientAuthorizationsService.java:68

◆ addBranch()

void org.xdi.oxauth.service.ClientAuthorizationsService.addBranch ( final String  userInum)
inline
49  {
50  SimpleBranch branch = new SimpleBranch();
51  branch.setOrganizationalUnitName("clientAuthorizations");
52  branch.setDn(getBaseDnForClientAuthorizations(userInum));
53 
54  ldapEntryManager.persist(branch);
55  }
String getBaseDnForClientAuthorizations(String oxId, String userInum)
Definition: ClientAuthorizationsService.java:145
PersistenceEntryManager ldapEntryManager
Definition: ClientAuthorizationsService.java:39

◆ containsBranch()

boolean org.xdi.oxauth.service.ClientAuthorizationsService.containsBranch ( final String  userInum)
inline
57  {
58  return ldapEntryManager.contains(SimpleBranch.class, getBaseDnForClientAuthorizations(userInum));
59  }
String getBaseDnForClientAuthorizations(String oxId, String userInum)
Definition: ClientAuthorizationsService.java:145
PersistenceEntryManager ldapEntryManager
Definition: ClientAuthorizationsService.java:39

◆ findClientAuthorizations()

ClientAuthorizations org.xdi.oxauth.service.ClientAuthorizationsService.findClientAuthorizations ( String  userInum,
String  clientId,
boolean  persistInLdap 
)
inline
68  {
69  if (persistInLdap) {
70  prepareBranch(userInum);
71 
72  String baseDn = getBaseDnForClientAuthorizations(userInum);
73  Filter filter = Filter.createEqualityFilter("oxAuthClientId", clientId);
74 
75  List<ClientAuthorizations> entries = ldapEntryManager.findEntries(baseDn, ClientAuthorizations.class, filter);
76  if (entries != null && !entries.isEmpty()) {
77  // if more then one entry then it's problem, non-deterministic behavior, id must be unique
78  if (entries.size() > 1) {
79  log.error("Found more then one client authorization entry by client Id: {}" + clientId);
80  for (ClientAuthorizations entry : entries) {
81  log.error(entry.toString());
82  }
83  }
84  return entries.get(0);
85  }
86  } else {
87  String key = getCacheKey(userInum, clientId);
88  Object cacheOjb = cacheService.get(CACHE_CLIENT_CUTHORIZATION, key);
89  if (cacheOjb != null && cacheOjb instanceof ClientAuthorizations) {
90  return (ClientAuthorizations) cacheOjb;
91  }
92  }
93 
94  return null;
95  }
static final String CACHE_CLIENT_CUTHORIZATION
Definition: ClientAuthorizationsService.java:47
String getBaseDnForClientAuthorizations(String oxId, String userInum)
Definition: ClientAuthorizationsService.java:145
CacheService cacheService
Definition: ClientAuthorizationsService.java:45
PersistenceEntryManager ldapEntryManager
Definition: ClientAuthorizationsService.java:39
String getCacheKey(String userInum, String clientId)
Definition: ClientAuthorizationsService.java:158
void prepareBranch(final String userInum)
Definition: ClientAuthorizationsService.java:61
Logger log
Definition: ClientAuthorizationsService.java:36

◆ getBaseDnForClientAuthorizations() [1/2]

String org.xdi.oxauth.service.ClientAuthorizationsService.getBaseDnForClientAuthorizations ( String  oxId,
String  userInum 
)
inline
145  {
146  String baseDn = getBaseDnForClientAuthorizations(userInum);
147  if (StringHelper.isEmpty(oxId)) {
148  return baseDn;
149  }
150  return String.format("oxId=%s,%s", oxId, baseDn);
151  }
String getBaseDnForClientAuthorizations(String oxId, String userInum)
Definition: ClientAuthorizationsService.java:145

◆ getBaseDnForClientAuthorizations() [2/2]

String org.xdi.oxauth.service.ClientAuthorizationsService.getBaseDnForClientAuthorizations ( String  userInum)
inline
153  {
154  final String userBaseDn = userService.getDnForUser(userInum); // inum=1234,ou=people,o=@!1111,o=gluu"
155  return String.format("ou=clientAuthorizations,%s", userBaseDn); // "ou=clientAuthorizations,inum=1234,ou=people,o=@!1111,o=gluu"
156  }
UserService userService
Definition: ClientAuthorizationsService.java:42
String getDnForUser(String inum)
Definition: UserService.java:393

◆ getCacheKey()

String org.xdi.oxauth.service.ClientAuthorizationsService.getCacheKey ( String  userInum,
String  clientId 
)
inlineprivate
158  {
159  return userInum + "_" + clientId;
160  }

◆ prepareBranch()

void org.xdi.oxauth.service.ClientAuthorizationsService.prepareBranch ( final String  userInum)
inline
61  {
62  // Create client authorizations branch if needed
63  if (!containsBranch(userInum)) {
64  addBranch(userInum);
65  }
66  }
void addBranch(final String userInum)
Definition: ClientAuthorizationsService.java:49
boolean containsBranch(final String userInum)
Definition: ClientAuthorizationsService.java:57

メンバ詳解

◆ CACHE_CLIENT_CUTHORIZATION

final String org.xdi.oxauth.service.ClientAuthorizationsService.CACHE_CLIENT_CUTHORIZATION = "ClientAuthorizationCache"
staticprivate

◆ cacheService

CacheService org.xdi.oxauth.service.ClientAuthorizationsService.cacheService
private

◆ ldapEntryManager

PersistenceEntryManager org.xdi.oxauth.service.ClientAuthorizationsService.ldapEntryManager
private

◆ log

Logger org.xdi.oxauth.service.ClientAuthorizationsService.log
private

◆ userService

UserService org.xdi.oxauth.service.ClientAuthorizationsService.userService
private

このクラス詳解は次のファイルから抽出されました: