简体   繁体   English

无法通过Tivoli Identity Manager 5.1中的用户控制台请求A / C

[英]Unable to request an A/C through user console in Tivoli identity manager 5.1

I want to understand how ACL's works in Tivoli Identity Manager. 我想了解ACL在Tivoli Identity Manager中的工作方式。 I am trying to request for an a/c on a service from a user console but getting an error : 我正在尝试从用户控制台请求服务上的A / C,但出现错误:

" The request cannot be submitted because the synchronization password does not comply with the password rules that govern the service. Change or reset the synchronization password to comply with the following password rules." “由于同步密码不符合管理服务的密码规则,因此无法提交请求。更改或重置同步密码以符合以下密码规则。”

I have set default password to "12345" in provisioning policy and password length from 0 to 8 in password policy and have grant 'ADD' operation in ACL, still dont know what wrong am i doing. 我已在设置策略中将默认密码设置为“ 12345”,在密码策略中将密码长度设置为0到8,并在ACL中授予了“ ADD”操作权限,仍然不知道我在做什么错。 pLease suggest 请提出建议

Below is the rule under default Identity policy for ITIM. 以下是ITIM的默认身份策略下的规则。

function createIdentity()  {   
var EXISTING_CASE=0;   
var UPPER_CASE=1;   
var LOWER_CASE=2;   
var tf = false;   
var identity = "";   
var baseidentity = "";   
 var counter = 0;   
var locale = subject.getProperty("erlocale");   
var fAttrKey = "uid";   
var sAttrKey = "";   
var idx1 = 0;   
var idx2 = 0;   
var fCase = 2;   
var sCase = 2;   
if ((locale != null) && (locale.length > 0)) {     
 locale = locale[0];   
}
if (locale == null || locale.length == 0)
locale = "";   
 var firstAttribute = "";   
 var secondAttribute = "";   
 if (((fAttrKey != null) && (fAttrKey.length > 0)) || ((sAttrkey != null) &&     (sAttrkey.length > 0))) {
 if ((fAttrKey != null) && (fAttrKey.length > 0)) {       
firstAttribute = subject.getProperty(fAttrKey);       
if (((firstAttribute != null) && (firstAttribute.length > 0)))         
 firstAttribute = firstAttribute[0];       
 if (firstAttribute == null || firstAttribute.length == 0)          
 firstAttribute = "";       
 else {         
 firstAttribute=IdentityPolicy.resolveAttribute(fAttrKey,firstAttribute);         
 if ((idx1>firstAttribute.length) || (idx1==0))            
   idx1=firstAttribute.length;         
 firstAttribute = firstAttribute.substring(0,idx1);       
 }       
if (fCase == UPPER_CASE)         
 firstAttribute = firstAttribute.toUpperCase(locale);       
 else if (fCase == LOWER_CASE)          
 firstAttribute = firstAttribute.toLowerCase(locale);     
}     
if ((sAttrKey != null) && (sAttrKey.length > 0)) {       
secondAttribute = subject.getProperty(sAttrKey);       
 if (((secondAttribute != null) && (secondAttribute.length > 0)))          
 secondAttribute = secondAttribute[0];       
 if (secondAttribute == null || secondAttribute.length == 0)          
 secondAttribute = "";       
 else {         
 secondAttribute=IdentityPolicy.resolveAttribute(sAttrKey,secondAttribute);         
 if ((idx2>secondAttribute.length) || (idx2==0))            
   idx2=secondAttribute.length;         
 secondAttribute = secondAttribute.substring(0,idx2);       
 }       
 if (sCase == UPPER_CASE)          
 secondAttribute = secondAttribute.toUpperCase(locale);       
 else if (sCase == LOWER_CASE)          
 secondAttribute = secondAttribute.toLowerCase(locale);     
 }     
 baseidentity = firstAttribute + secondAttribute;   
 }   
 if ((baseidentity == null) || (baseidentity.length == 0)) {     
var givenname = subject.getProperty("givenname");     
 if (((givenname != null) && (givenname.length > 0)))        
 givenname = givenname[0];     
  if(givenname == null || givenname.length == 0)        
 givenname = "";     
 else        
  givenname = givenname.substring(0,1);     
  baseidentity = givenname + subject.getProperty("sn")[0];   
  }   
  tf = IdentityPolicy.userIDExists(baseidentity, false, false);   
 if (!tf)      
 return baseidentity;   
  while (tf) {     
 counter+=1;     
  identity = baseidentity + counter;     
  tf = IdentityPolicy.userIDExists(identity, false, false);   
 }   
 return identity; 
 }  

 return createIdentity();

I am going to assume when you are requesting access you don't already have an account for the service. 我假设在您请求访问权限时,您还没有该服务的帐户。 Hence, it is trying to create a new account for that service before provisioning the access. 因此,它正在尝试在提供访问权限之前为该服务创建一个新帐户。 When the new account is created, it will use the password from the identity for the service if you have global password synchronization turned on. 创建新帐户后,如果启用了全局密码同步,它将使用服务标识中的密码。

The password set on the identity (erSynchPassword) does not meet the password requirements for the individual service. 在标识(erSynchPassword)上设置的密码不符合单个服务的密码要求。 Try changing the password on the identity and make sure that the password meets the service's password requirements. 尝试更改身份上的密码,并确保密码符合服务的密码要求。 Or, temporarily for testing, disable the password policy that applies to that service and attempt to request access. 或者,暂时出于测试目的,禁用适用于该服务的密码策略并尝试请求访问。

If this is a development question, personally I would disable all password policies temporarily to determine if the problem is really a password policy issue. 如果这是一个发展问题,我个人将暂时禁用所有密码策略,以确定问题是否真的是密码策略问题。 That is the easiest way to troubleshoot the error you are seeing. 这是解决您所看到的错误的最简单方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM