2016-06-30 11 views
1

SAML2トークンに含まれるカスタム属性に基づいてログオンする際に、WSO2 APIマネージャでユーザー権限レベル(パブリッシュ、作成、サブスクライブなど)を設定しようとしています。アクティブなユーザーとそのマップされた役割のリストに基づいていません。カスタム属性の動的セットでユーザー特権をカスタマイズすることは可能ですか?WSO2 APIマネージャを設定してSAML2属性に基づいてアクセス権を設定する

SAMLトークンはサードパーティソースからのものですが、必要に応じてWSO2 Identity Serverとの統合も可能です。

+0

最終的にコミュニティと共有できる解決策がありますか?ありがとうございました。 –

答えて

0

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

関連する問題