CLASS
AuthorizationSession
Клиентский refresh-token авторизации
После установления, сессия авторизации метод establish(_:)
продолжает обновлять доступ и refresh token-ы по требованию.
В случае истечения срока действия токена, генерируется исключение и метод останавливается пока не создастся новая сессия.
Для нескольких параллельных сессий нужно предоставить точный и стабильный для каждой сессии tokenId (например ID устройства).
Заметьте
Периодического обновления не происходит в режиме ожидания, поэтому срок действия сессии неминуемо истечет. Однако, можно периодически вызывать метод refresh()
.
Методы
init(url:tokenId:permissions:)
Пример
let auth = AuthorizationSession(url: "https://api-cloud-dev.spatium.io/authorization/v1", tokenId: UUID().uuidString, permissions: ["read", "secret"])
let data = try await jsonPost(
"https://api-cloud-dev.spatium.io/authorization/v1/api/security-factor/credentials",
[
"request-id" : UUID().uuidString
],
CredentialsRequest(
username: "mario",
password: "123456"
),
CredentialsResponse.self
)
try await auth.establish([data.data.securityToken]);
let first = try await auth.getPermissionToken();
try await Task.sleep(nanoseconds: 2_000_000_000)
try await auth.refresh();
let second = try await auth.getPermissionToken();
XCTAssertFalse(first == second)
Параметры
Имя | Описание |
---|---|
url | authorization service эндпоинт (HTTP(S)) |
tokenId | ID сессии авторизации, контролирует несколько параллельных сессий |
permissions | список необходимых разрешений для этой сессии |
establish(_:)
Устанавливает новую сессию авторизации, заменяет предыдущую если она была.
Этот метод производит получение первоначального токена, и может быть вызван снова (с валидным токеном) чтобы аннулировать предыдущий refresh token. Перед установкой сессии не должно быть произведено никаких операций с токеном.
Параметры
Имя | Описание |
---|---|
securityTokens | список собранных токенов безопасности, достаточных для получения разрешений |
refresh()
Обновление сессии вручную
Этот метод вызывается внутренне, выдает ошибку если действие refresh токена уже истекло.
getPermissionToken()
Получение текущего permission (access) токена
Пока действие refresh токена не истекло, этот метод всегда будет возвращать валидный токен доступа и обновляет его при необходимости
Возвращает
String
permission токен по параметрам конструктора