时基用户帐户到期

时间:2016-09-15 11:57:23

标签: cloudfoundry-uaa

我们正在使用CloudFoundry UAA进行用户身份验证和授权。据我所知,我们可以将用户设置为活动和非活动。但是我们要求在给定时间后过期用户帐户。如何实现时基用户帐户使用UAA到期?

1 个答案:

答案 0 :(得分: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'表示默认区域

例如,如果您在名为“admin”的客户端上使用uaac,则可以通过以下方式添加范围:

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

请记住在更改权限后续订访问令牌:

$ uaac token client get admin -s <password_here>

一旦我们获得所有必需的权限,我们就可以使用'curl'子命令更新密码策略:

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"}'

我知道,这有点麻烦,这可能就是为什么在Pivotal的Cloudfoundry版本中你会得到一个很好的网页表单来管理密码策略:

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

请注意,只有在使用 '内部' 身份提供商时才能使用此功能。另一方面,如果您的UAA依赖于LDAP等外部身份验证源,则可能需要使用特定于此外部系统的其他机制。

有关UAA doc中的身份提供商管理的更多信息:

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