2016-06-30 11 views
1

Ich versuche Benutzerrechtebenen (veröffentlichen, erstellen, abonnieren usw.) im WSO2-API-Manager bei der Anmeldung basierend auf benutzerdefinierten Attributen im SAML2-Token festzulegen. Nicht basierend auf einer Liste aktiver Benutzer und deren zugeordneten Rollen. Ist es möglich, die Benutzerrechte mit einem dynamischen Satz benutzerdefinierter Attribute anzupassen?WSO2-API-Manager zum Festlegen von Berechtigungen basierend auf SAML2-Attributen konfigurieren

Das SAML-Token stammt von einer Drittanbieterquelle, die Integration mit WSO2 Identity Server ist jedoch bei Bedarf möglich.

+0

Haben Sie endlich eine Lösung, die Sie mit der Gemeinschaft teilen können? Vielen Dank. –

Antwort

0

API Manager führt die Identity Server-Anwendungsverwaltung unter der Haube aus, um Benutzerrollen und Berechtigungen nachzuschlagen. In org.wso2.carbon.identity.application.mgt.ApplicationMgtUtil können Sie die isUserAuthorized-Methode sehen, die vermutlich ausgelöst wird, wenn die Anwendung die Berechtigungen des Benutzers überprüfen muss.

/** 
* @param applicationName 
* @param username 
* @return 
* @throws IdentityApplicationManagementException 
*/ 
public static boolean isUserAuthorized(String applicationName, String username) 
     throws IdentityApplicationManagementException { 

    String applicationRoleName = getAppRoleName(applicationName); 
    try { 
     if (log.isDebugEnabled()) { 
      log.debug("Checking whether user has role : " + applicationRoleName + " by retrieving role list of " + 
         "user : " + username); 
     } 
     String[] userRoles = CarbonContext.getThreadLocalCarbonContext().getUserRealm() 
       .getUserStoreManager().getRoleListOfUser(username); 
     for (String userRole : userRoles) { 
      if (applicationRoleName.equals(userRole)) { 
       return true; 
      } 
     } 
    } catch (UserStoreException e) { 
     throw new IdentityApplicationManagementException("Error while checking authorization for user: " + 
       username + " for application: " + applicationName, e); 
    } 
    return false; 
} 

Sie sollten in der Lage sein

String[] userRoles = CarbonContext.getThreadLocalCarbonContext().getUserRealm() 
      .getUserStoreManager().getRoleListOfUser(username); 

mit Code zu ersetzen, die Rollen basierend auf den Attributen, die in der SAML2 Token abruft, obwohl offensichtlich würden Sie und unterstützen eine Struktur aufbauen müssen fähig ist Speichern eines solchen Mappings

https://github.com/wso2/carbon-identity-framework/blob/master/components/application-mgt/org.wso2.carbon.identity.application.mgt/src/main/java/org/wso2/carbon/identity/application/mgt/ApplicationMgtUtil.java

Verwandte Themen