APIマネージャーは、ユーザーロールとアクセス許可を検索するために、アイデンティティサーバーアプリケーション管理を実行します。 org.wso2.carbon.identity.application.mgt.ApplicationMgtUtil
には、アプリケーションがユーザーのアクセス許可を確認する必要があるときはいつも、起動されると思われるisUserAuthorized
メソッドが表示されます。
/**
* @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;
}
明らかにあなたが可能な構造を構築し、サポートする必要があると思いますけれどもあなたは、SAML2トークンに存在する属性に基づいてロールを取得するコードと
String[] userRoles = CarbonContext.getThreadLocalCarbonContext().getUserRealm()
.getUserStoreManager().getRoleListOfUser(username);
を交換することができるはずですそのようなマッピングを格納する。
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
最終的にコミュニティと共有できる解決策がありますか?ありがとうございました。 –