2016-09-15 51 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中編寫自定義代碼? –