keycloak-oidc-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 RealmModel realm
Definition: IdentityProviderPermissions.java:52
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
final KeycloakSession session
Definition: IdentityProviderPermissions.java:51

関数詳解

◆ 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 getExchangeToPermissionName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:67
Policy findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
Resource resource(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:131
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
Resource findByName(String name, String resourceServerId)
boolean evaluatePermission(Resource resource, Scope scope, ResourceServer resourceServer)
Definition: MgmtPermissions.java:316
Scope exchangeToScope(ResourceServer server)
Definition: IdentityProviderPermissions.java:126
static final Logger logger
Definition: IdentityProviderPermissions.java:50
final KeycloakSession session
Definition: IdentityProviderPermissions.java:51

◆ 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  }
String getExchangeToPermissionName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:67
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
Resource resource(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:131
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
Resource findByName(String name, String resourceServerId)
void deletePolicy(String name, ResourceServer server)
Definition: IdentityProviderPermissions.java:91

◆ 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  }
Policy findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
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;
202  }
String getExchangeToPermissionName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:67
Policy findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53

◆ 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  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
Scope findByName(String name, String resourceServerId)
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 getExchangeToPermissionName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:67
Policy findByName(String name, String resourceServerId)
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
Policy exchangeToPermission(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:198
Resource resource(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:131
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
Resource findByName(String name, String resourceServerId)
Scope initializeScope(String name, ResourceServer server)
Definition: MgmtPermissions.java:287
Scope exchangeToScope(ResourceServer server)
Definition: IdentityProviderPermissions.java:126
Resource create(String name, ResourceServer resourceServer, String owner)

◆ 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  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
Resource findByName(String name, String resourceServerId)

◆ 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  }
StoreFactory getStoreFactory()
Definition: AuthorizationProvider.java:109
String getResourceName(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:63
ResourceServer initializeRealmResourceServer()
Definition: MgmtPermissions.java:259
Resource resource(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:131
final MgmtPermissions root
Definition: IdentityProviderPermissions.java:54
final AuthorizationProvider authz
Definition: IdentityProviderPermissions.java:53
Resource findByName(String name, String resourceServerId)

◆ 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 deletePermissions(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:99
void initialize(IdentityProviderModel idp)
Definition: IdentityProviderPermissions.java:71

メンバ詳解

◆ 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

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