如何在Saviynt到Active Directory的API属性映射中为enddate增加一天
如何在Saviynt到Active Directory的API属性映射中为enddate增加一天
嗨,我来帮你搞定这个需求!其实操作很简单,只需要在你现有的时间戳计算逻辑里加上一天对应的毫秒数就行,具体说明如下:
先理清楚你现有代码的核心逻辑:
user?.enddate.getTime()是获取用户enddate的Java毫秒级时间戳(以1970-01-01为起始点)11644473600000是用来把Java时间戳转换为Active Directory时间戳的偏移量(AD的时间起点是1601-01-01)10000是把毫秒单位转换成AD要求的100纳秒单位- 你代码里的
18400000应该是时区偏移的调整值,这个可以保留不变
要给enddate增加一天,我们只需要给user?.enddate.getTime()的结果加上86400000(因为1天=24小时×60分钟×60秒×1000毫秒=86400000毫秒)。
修改后的完整属性映射代码如下:
"accountExpires": "${ if((user.employeeType.equals('Contractor')) && (user?.enddate!=null)) {10000*(user?.enddate.getTime() + 86400000 + 11644473600000 + 18400000)} else {'0'}}"
另外提个小细节:Java里的逻辑与运算符推荐用&&(短路与),比&更高效,我已经帮你替换过来了,如果你的环境确实需要用&,再改回去就行。
测试一下的话,假设原enddate是Mar 03, 2022 00:00:00,加一天后就会变成Mar 04, 2022 00:00:00,对应的ADaccountExpires值也会正确同步过去。
备注:内容来源于stack exchange,提问作者SREEJITH R
相关产品推荐
相关产品推荐

