SignerClient > AuthorizationSession
AuthorizationSession
class AuthorizationSession(url: String, tokenId: String, permissions: List<String>)
Клиентский refresh-token авторизации
После установления, сессия авторизации метод (establish) продолжает обновлять доступ и refresh token-ы по требованию. В случае истечения срока действия токена, генерируется исключение и метод останавливается пока не создастся новая сессия.
Для нескольких параллельных сессий нужно предоставить точный и стабильный для каждой сессии tokenId (например ID устройства)
Заметьте
Периодического обновления не происходит в режиме ожидания, поэтому срок действия сессии неминуемо истечет. Однако, можно периодически вызывать метод refresh()
.
Параметры
androidJvm
url | authorization service эндпоинт (HTTP(S)) |
tokenId | ID сессии авторизации, контролирует несколько параллельных сессий |
permissions | список необходимых разрешений для этой сессии |
Пример
val auth = AuthorizationSession(
url = "https://api-cloud-dev.spatium.io/authorization/v1",
tokenId = UUID.randomUUID().toString(),
listOf("read", "secret")
)
val data = jsonPost(
"https://api-cloud-dev.spatium.io/authorization/v1/api/security-factor/credentials",
mapOf(Pair("request-id", UUID.randomUUID().toString())),
CredentialsRequest(username = "mario", password = "123456"),
CredentialsResponse::class.java
)
auth.establish(listOf(data!!.data.securityToken))
val first = auth.getPermissionToken()
Thread.sleep(2_000)
auth.refresh()
val second = auth.getPermissionToken()
assertFalse(first == second)
Конструкторы
AuthorizationSession | [androidJvm] constructor(url: String, tokenId: String, permissions: List<String>) |
Функции
Имя | Описание |
---|---|
establish | [androidJvm] suspend fun establish(securityTokens: List<String>) Устанавливает новую сессию авторизации, заменяет предыдущую если она была. |
getPermissionToken | [androidJvm] suspend fun getPermissionToken(): String Получение текущего permission (access) токена |
refresh | [androidJvm] suspend fun refresh() Manually refresh session |