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
Haben Sie endlich eine Lösung, die Sie mit der Gemeinschaft teilen können? Vielen Dank. –