CLASS
HaapiTokenManager
Contents
- Properties
dpop
@objcMembers public final class HaapiTokenManager: NSObject
HaapiTokenManager instances manage HAAPI tokens and facilitate interacting with the HAAPI service.
If needed, the HaapiTokenManager performs the attestation flow, by using the Device Check services on the iOS device.
The HaapiTokenManager is created by using the HaapiTokenManagerBuilder, like
haapiTokenManager = HaapiTokenManagerBuilder(
tokenEndpoint: "https://curity.example.com/oauth/token"
clientId: "my-oauth-client-id"
).build()
The HaapiTokenManager internally relies on an URLSession instance with default configuration to perform HTTP requests. However, it is possible to provide
an initialized URLSession-instance to the Builder upon instantiation, which ensures custom connection-related configuration can be supported.
Once an instance of the HaapiTokenManager is created, it can be used to obtain a HAAPI token. Once a HAAPI token is obtained, the HaapiTokenManager
can provide a client through the createClient() method. This client can be instructed to use a provided URLSession to make its requests, or use an internal
URLSession instead.
For example, create a default HaapiClient using the HaapiTokenManager is done like
let haapiClient = haapiTokenManager.createClient()
Alternatively, creating it with a custom URLSession is done like
let haapiClient = haapiTokenManager.createClient(
urlSession: URLSession(
configuration: URLSessionConfiguration.default,
delegate: urlSessionDelegate,
delegateQueue: nil
)
Once a HaapiTokenManager is created, the HaapiClient that it can provide can be used to perform operations according to the HAAPI specifications.
An example request made using the HaapiClient looks like
var authorizationRequest = URLRequest(url: FlowTests.authorizationUrl)
authorizationRequest.httpMethod = "GET"
haapiClient.performDataTask(for: authorizationRequest) { result in
switch result {
case .success(let responseAndData):
let response = responseAndData.response
let data = responseAndData.data
...
break
case .failure(let error):
...
}
}
The above example attempts to make a GET request to the authorization endpoint and provides a completing function for further processing of the results.
Properties
dpop
public var dpop: Dpop?
Return the Dpop that was used.