
# IAM后端服务配置
1. 镜像版本 iam-sso：deepexi-client-iam-admin:4.6.4-beta_arm64
   iam-openapi：deepexi-client-iam-openapi:4.6.4-beta_arm64
   iam-admin：deepexi-client-iam-admin:4.6.4-beta_arm64
   
2. 启动配置 iam-admin、iam-openapi这两个服务的启动配置需要指定租户管理员的租户id。不指定默认值为：4e086791212649d79f30ec0527599aee
   需要添加的配置项：
   ```
   --deepexi.default.tenant-id=？
   ```
   图1启动配置   
   ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001528737817.png)
   deepexi.default.tenant-id这个值在deepexi_client_iam数据库执行下面sql可以查询：
   ```
   select tenant_id from deepexi_client_iam.account_account_info where is_main = 1 and enterprise_code = 'admin' and is_deleted = 0
   ```
   
3. apollo配置 security服务apollo 配置中，下面这几项需要配置正确。（使用最新iam-4.4.0初始化sql初始化iam的数据库，配置项的值如下）初始化sql参考：
   https://deepexi.yuque.com/docs/share/550fe007-a9db-4496-95fa-c4d8a14bf369?#
   ```
   # 角色组id
   role.groups.id = 1  (角色组id默认为1)
   # 应用系统功能组id
   system.function.id = 1
   # 应用项目功能组id
   project.function.id = 2
   # 权限中心元素id
   permission.center.id = 12
   # 账户管理元素id
   user.manager.id = 17
   # 角色管理元素id
   role.manager.id = 14
   # 权限管理元素id
   permission.manager.id = 54
   ```
   以上配置来源通过查询deepexi_client_iam数据库相关表得到，相关sql如下：
   select id from permission_role_group where name = '系统角色组';
   select id from permission_function_group where name = '系统功能组';
   select id from permission_function_group where name = '项目功能组';
   select id from permission_element_resource where name = '权限中心';
   select id from permission_element_resource where name = '账户管理';
   select id from permission_element_resource where name = '角色管理';
   select id from permission_element_resource where name = '授权管理';
   如果上述几项配置不正确，登录后菜单将加载失败。
   
4. 登录访问Iam系统 http://139.159.196.135/iam-console/index.html#/login
   daas租户账号：daas/abcd1234，租户管理员账号：admin/abcd1234
   租户账号登录只能管理自己租户，效果如下：
   图2登录访问Iam系统1   
   ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001528577861.png)
   租户管理员账号登录可以管理所有租户及应用，效果如下：
   图3登录访问Iam系统2   
   ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001477977876.png)
   ![](https://support.huaweicloud.com/deepexidip-dma/public_sys-resources/note_3.0-zh-cn.png)
   如果使用admin(租户管理员)账号登录，存在多个租户时，页面账号列表却只有admin账号。要去检查iam-admin、iam-openapi启动配置的--deepexi.default.tenant-id这个值是否配置正确（参考7.5.2章节）。
   
5. 问题排查
   1. DAAS系统登录不上 确认主账号在IAM是否可以正常登录。（确保账号密码是正确的）
      确认登录时，daas security服务是否调用 iam-sso 成功。 （查看 iam 日志可以知道。ps: 没调用成功也会提示账号密码错误 ）
      
   
   2. 登录成功，报错：该租户并未订阅该产品，请先订阅后再访问 使用admin账号登录IAM中查看租户是否被授权了daas产品。如果确定了已经授权但还是报同样的错，则需要查看admin-openapi的日志分析问题。
      图4登录成功1   
      ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001477818052.png)
      图5登录成功2   
      ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001528457961.png) 
   
   3. IAM登录admin账号，看不到所有用户 参考7.5.2，将租户ID在启动脚本配置上
      
   
   4. 非主账号，登录成功，菜单访问不了 需要登录主账号去给这个子账号配置权限
      
   
   5. 账号创建报错 访问下面接口会返回\&quot;401\&quot;，\&quot;token失效请重新登录\&quot;
      http://139.159.196.135/deepexi-daas-security/api/v1/users/currentUser?tenantId=985e029870ba47399933a6bf5e08eb3d\&userId=10002\&projectId=\&businessSegmentsId=\&_=1616033853562
      确认security服务apollo配置，iam.signingKey = d20a0382a5f840f7afbd3f4df92ecaf8 是否为这个值。需要修改成这个值。security服务JWT解析编码要用到这个值
      图6账号创建报错   
      ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001477658076.png) 
   
   6. 访问iam出现nginx首页 如果访问Iam出现以下页面，需要设置konga配置
      图7访问iam出现nginx首页   
      ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001477498432.png)
      打开"konga \> ROUTES"，找到deepexi-daas-iam-web配置，关闭"Strip Path"
      图8图示1   
      ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001528818305.png)
      结果如下：
      图9图示2   
      ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001528737821.png)
      保存，重新访问iam-console
      图10图示3   
      ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001477977880.png) 
    
 
