2016-09-15 27 views
2

我们使用CloudFoundry UAA进行用户验证和授权。据我了解,我们可以将用户设置为活动和非活动状态。但我们有要求在给定时间后过期用户帐户。我们如何才能使用UAA实现时基用户帐户到期?时基用户帐户到期

回答

2

它可能不是您正在寻找的内容,但您可以使用密码过期功能来达到此目的。它允许为属于特定区域的所有用户设置月份到期时间,这意味着最小时间段为一个月。

如果你展示自己的区域身份提供者,你会发现在配置了“expirePasswordInMonths”属性:

{ 
    "type": "uaa", 
    "config": "{\"emailDomain\":null,\"additionalConfiguration\":null,\"providerDescription\":null,\"passwordPolicy\":{\"minLength\":0,\"maxLength\":255,\"requireUpperCaseCharacter\":0,\"requireLowerCaseCharacter\":0,\"requireDigit\":0,\"requireSpecialCharacter\":0,\"expirePasswordInMonths\":1},\"lockoutPolicy\":{\"lockoutPeriodSeconds\":300,\"lockoutAfterFailures\":5,\"countFailuresWithin\":3600},\"disableInternalUserManagement\":false}", 
    "id": "fe5d0b8d-4d65-4090-b65a-3c17682bec7e", 
    "originKey": "uaa", 
    "name": "uaa", 
    "version": 2, 
    "created": 946684800000, 
    "last_modified": 1473569982108, 
    "active": true, 
    "identityZoneId": "uaa" 
} 

这是一个需要改变的属性。但令人惊讶的是,到达那里并不容易。

首先,您必须获取具有两个附加范围的访问令牌:“zones.read”和“zones。{zone id} .admin”,其中{zone id}是区域的名称 - 'uaa'一。

例如,如果您有一个名为“管理员”的客户端与uaac工作,你可以添加的范围是这样的:

$ uaac client update admin --authorities "EXISTING-PERMISSIONS zones.read zones.uaa.admin" 

记住更新访问令牌中的权限已被更改后:

$ uaac token client get admin -s <password_here> 

一旦我们拥有所有必需的权限的,我们可以使用更新密码策略“卷曲”子命令:

uaac curl -k /identity-providers/fe5d0b8d-4d65-4090-b65a-3c17682bec7e -X PUT -H "Content-Type: application/json" \ 
    -d '{ "type": "uaa", "config": "{\"emailDomain\":null,\"additionalConfiguration\":null,\"providerDescription\":null,\"passwordPolicy\":{\"minLength\":0,\"maxLength\":255,\"requireUpperCaseCharacter\":0,\"requireLowerCaseCharacter\":0,\"requireDigit\":0,\"requireSpecialCharacter\":0,\"expirePasswordInMonths\":1},\"lockoutPolicy\":{\"lockoutPeriodSeconds\":300,\"lockoutAfterFailures\":5,\"countFailuresWithin\":3600},\"disableInternalUserManagement\":false}", "id": "fe5d0b8d-4d65-4090-b65a-3c17682bec7e", "originKey": "uaa", "name": "uaa", "version": 2, "created": 946684800000, "last_modified": 1473569982108, "active": true, "identityZoneId": "uaa"}' 

我知道,这是一个有点麻烦,这可能就是处于举足轻重的版本Cloudfoundry你得到一个不错的web表单管理密码策略:

https://docs.pivotal.io/pivotalcf/1-7/opsguide/pw-policy.html

记住,此功能使用时才有效'internal'身份提供者。另一方面,如果您的UAA依赖于LDAP等外部身份验证源,则可能需要使用特定于此外部系统的其他机制。

更多关于UAA DOC身份提供商管理:

https://github.com/cloudfoundry/uaa/blob/master/docs/UAA-APIs.rst#identity-provider-api-identity-providers

+0

谢谢你这么多的响应。这对我们在几个月内过期用户非常有帮助。但我们也有要求在几小时或几天内禁用用户帐户,例如3个小时,15天等。看起来我们不能通过“expirepasswordinmonths”来实现。你能指导我们如何实现它吗?我们是否需要在UAA中编写自定义代码? –