keycloak-service
公開メンバ関数 | 限定公開変数類 | 非公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions クラス
org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions の継承関係図
Inheritance graph
org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions 連携図
Collaboration graph

公開メンバ関数

 IdentityProviderPermissions (KeycloakSession session, RealmModel realm, AuthorizationProvider authz, MgmtPermissions root)
 
boolean isPermissionsEnabled (IdentityProviderModel idp)
 
void setPermissionsEnabled (IdentityProviderModel idp, boolean enable)
 
Resource resource (IdentityProviderModel idp)
 
Map< String, String > getPermissions (IdentityProviderModel idp)
 
boolean canExchangeTo (ClientModel authorizedClient, IdentityProviderModel to)
 
Policy exchangeToPermission (IdentityProviderModel idp)
 

限定公開変数類

final KeycloakSession session
 
final RealmModel realm
 
final AuthorizationProvider authz
 
final MgmtPermissions root
 

非公開メンバ関数

String getResourceName (IdentityProviderModel idp)
 
String getExchangeToPermissionName (IdentityProviderModel idp)
 
void initialize (IdentityProviderModel idp)
 
void deletePolicy (String name, ResourceServer server)
 
void deletePermissions (IdentityProviderModel idp)
 
Scope exchangeToScope (ResourceServer server)
 

静的非公開変数類

static final Logger logger = Logger.getLogger(IdentityProviderPermissions.class)
 

詳解

Manages default policies for identity providers.

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ IdentityProviderPermissions()

org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.IdentityProviderPermissions ( KeycloakSession  session,
RealmModel  realm,
AuthorizationProvider  authz,
MgmtPermissions  root 
)
inline
56  {
57  this.session = session;
58  this.realm = realm;
59  this.authz = authz;
60  this.root = root;
61  }
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
final KeycloakSession session
Definition: IdentityProviderPermissions.java:51
final RealmModel realm
Definition: IdentityProviderPermissions.java:52

関数詳解

◆ canExchangeTo()

boolean org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.canExchangeTo ( ClientModel  authorizedClient,
IdentityProviderModel  to 
)
inline

org.keycloak.services.resources.admin.permissions.IdentityProviderPermissionManagementを実装しています。

149  {
150 
151  if (!authorizedClient.equals(to)) {
152  ResourceServer server = root.initializeRealmResourceServer();
153  if (server == null) {
154  logger.debug("No resource server set up for target idp");
155  return false;
156  }
157 
158  Resource resource = authz.getStoreFactory().getResourceStore().findByName(getResourceName(to), server.getId());
159  if (resource == null) {
160  logger.debug("No resource object set up for target idp");
161  return false;
162  }
163 
164  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(getExchangeToPermissionName(to), server.getId());
165  if (policy == null) {
166  logger.debug("No permission object set up for target idp");
167  return false;
168  }
169 
170  Set<Policy> associatedPolicies = policy.getAssociatedPolicies();
171  // if no policies attached to permission then just do default behavior
172  if (associatedPolicies == null || associatedPolicies.isEmpty()) {
173  logger.debug("No policies set up for permission on target idp");
174  return false;
175  }
176 
177  Scope scope = exchangeToScope(server);
178  if (scope == null) {
179  logger.debug(TOKEN_EXCHANGE + " not initialized");
180  return false;
181  }
182  ClientModelIdentity identity = new ClientModelIdentity(session, authorizedClient);
183  EvaluationContext context = new DefaultEvaluationContext(identity, session) {
184  @Override
185  public Map<String, Collection<String>> getBaseAttributes() {
186  Map<String, Collection<String>> attributes = super.getBaseAttributes();
187  attributes.put("kc.client.id", Arrays.asList(authorizedClient.getClientId()));
188  return attributes;
189  }
190 
191  };
192  return root.evaluatePermission(resource, scope, server, context);
193  }
194  return true;
195  }
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
String getExchangeToPermissionName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:67
static final Logger logger
Definition: IdentityProviderPermissions.java:50
final KeycloakSession session
Definition: IdentityProviderPermissions.java:51
Resource resource(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:131
Scope exchangeToScope(ResourceServer server)
Definition: IdentityProviderPermissions.java:126
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316

◆ deletePermissions()

void org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.deletePermissions ( IdentityProviderModel  idp)
inlineprivate
99  {
100  ResourceServer server = root.initializeRealmResourceServer();
101  if (server == null) return;
103  Resource resource = authz.getStoreFactory().getResourceStore().findByName(getResourceName(idp), server.getId());;
104  if (resource != null) authz.getStoreFactory().getResourceStore().delete(resource.getId());
105  }
void deletePolicy(String name, ResourceServer server)
Definition: IdentityProviderPermissions.java:91
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
String getExchangeToPermissionName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:67
Resource resource(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:131

◆ deletePolicy()

void org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.deletePolicy ( String  name,
ResourceServer  server 
)
inlineprivate
91  {
92  Policy policy = authz.getStoreFactory().getPolicyStore().findByName(name, server.getId());
93  if (policy != null) {
94  authz.getStoreFactory().getPolicyStore().delete(policy.getId());
95  }
96 
97  }
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53

◆ exchangeToPermission()

Policy org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.exchangeToPermission ( IdentityProviderModel  idp)
inline

org.keycloak.services.resources.admin.permissions.IdentityProviderPermissionManagementを実装しています。

198  {
199  ResourceServer server = root.initializeRealmResourceServer();
200  if (server == null) return null;
201  return authz.getStoreFactory().getPolicyStore().findByName(getExchangeToPermissionName(idp), server.getId());
202  }
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
String getExchangeToPermissionName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:67

◆ exchangeToScope()

Scope org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.exchangeToScope ( ResourceServer  server)
inlineprivate
126  {
127  return authz.getStoreFactory().getScopeStore().findByName(TOKEN_EXCHANGE, server.getId());
128  }
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53

◆ getExchangeToPermissionName()

String org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.getExchangeToPermissionName ( IdentityProviderModel  idp)
inlineprivate
67  {
68  return TOKEN_EXCHANGE + ".permission.idp." + idp.getInternalId();
69  }

◆ getPermissions()

Map<String, String> org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.getPermissions ( IdentityProviderModel  idp)
inline

org.keycloak.services.resources.admin.permissions.IdentityProviderPermissionManagementを実装しています。

141  {
142  initialize(idp);
143  Map<String, String> scopes = new LinkedHashMap<>();
144  scopes.put(TOKEN_EXCHANGE, exchangeToPermission(idp).getId());
145  return scopes;
146  }
Policy exchangeToPermission(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:198
void initialize(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:71

◆ getResourceName()

String org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.getResourceName ( IdentityProviderModel  idp)
inlineprivate
63  {
64  return "idp.resource." + idp.getInternalId();
65  }

◆ initialize()

void org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.initialize ( IdentityProviderModel  idp)
inlineprivate
71  {
72  ResourceServer server = root.initializeRealmResourceServer();
73  Scope exchangeToScope = root.initializeScope(TOKEN_EXCHANGE, server);
74 
75  String resourceName = getResourceName(idp);
76  Resource resource = authz.getStoreFactory().getResourceStore().findByName(resourceName, server.getId());
77  if (resource == null) {
78  resource = authz.getStoreFactory().getResourceStore().create(resourceName, server, server.getId());
79  resource.setType("IdentityProvider");
80  Set<Scope> scopeset = new HashSet<>();
81  scopeset.add(exchangeToScope);
82  resource.updateScopes(scopeset);
83  }
84  String exchangeToPermissionName = getExchangeToPermissionName(idp);
85  Policy exchangeToPermission = authz.getStoreFactory().getPolicyStore().findByName(exchangeToPermissionName, server.getId());
86  if (exchangeToPermission == null) {
87  Helper.addEmptyScopePermission(authz, server, exchangeToPermissionName, resource, exchangeToScope);
88  }
89  }
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
Scope initializeScope(String name, ResourceServer server)
Definition: MgmtPermissions.java:287
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
Policy exchangeToPermission(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:198
String getExchangeToPermissionName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:67
Resource resource(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:131
Scope exchangeToScope(ResourceServer server)
Definition: IdentityProviderPermissions.java:126

◆ isPermissionsEnabled()

boolean org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.isPermissionsEnabled ( IdentityProviderModel  idp)
inline

org.keycloak.services.resources.admin.permissions.IdentityProviderPermissionManagementを実装しています。

108  {
109  ResourceServer server = root.initializeRealmResourceServer();
110  if (server == null) return false;
111 
112  return authz.getStoreFactory().getResourceStore().findByName(getResourceName(idp), server.getId()) != null;
113  }
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53

◆ resource()

Resource org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.resource ( IdentityProviderModel  idp)
inline

org.keycloak.services.resources.admin.permissions.IdentityProviderPermissionManagementを実装しています。

131  {
132  ResourceServer server = root.initializeRealmResourceServer();
133  if (server == null) return null;
134  Resource resource = authz.getStoreFactory().getResourceStore().findByName(getResourceName(idp), server.getId());
135  if (resource == null) return null;
136  return resource;
137  }
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
Resource resource(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:131

◆ setPermissionsEnabled()

void org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.setPermissionsEnabled ( IdentityProviderModel  idp,
boolean  enable 
)
inline

org.keycloak.services.resources.admin.permissions.IdentityProviderPermissionManagementを実装しています。

116  {
117  if (enable) {
118  initialize(idp);
119  } else {
120  deletePermissions(idp);
121  }
122  }
void initialize(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:71
void deletePermissions(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:99

メンバ詳解

◆ authz

final AuthorizationProvider org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.authz
protected

◆ logger

final Logger org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.logger = Logger.getLogger(IdentityProviderPermissions.class)
staticprivate

◆ realm

final RealmModel org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.realm
protected

◆ root

final MgmtPermissions org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.root
protected

◆ session

final KeycloakSession org.keycloak.services.resources.admin.permissions.IdentityProviderPermissions.session
protected

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