Я пытаюсь получить доступ к ресурсу, защищенному Google Cloud IAP, из моего приложения для iOS.
Я могу войти в свою учетную запись Google из приложения и получить идентификационный токен, но я получаю следующий ответс HTTP-кодом ошибки 401 при установке идентификатора токена в качестве токена носителя в заголовке авторизации для ресурса, который я хотел бы запросить.
"Произошла ошибка с вашим запросом. Код ошибки 13"
Я попытался отправить запрос почтальону, но это также привело к той же ошибке.
Я использую следующий код для установки идентификатора клиента из загруженного файла credentials.plist.
if let path = Bundle.main.path(forResource: "credentials", ofType: "plist") {
let nsDictionary = NSDictionary(contentsOfFile: path)
let clientId = nsDictionary!["CLIENT_ID"] as? String
GIDSignIn.sharedInstance().clientID = clientId
GIDSignIn.sharedInstance().delegate = self
GIDSignIn.sharedInstance().uiDelegate = self;
}
После этого я вхожу в Google.
if GIDSignIn.sharedInstance().hasAuthInKeychain() {
GIDSignIn.sharedInstance().signInSilently()
} else {
GIDSignIn.sharedInstance().signIn()
}
После входа в систему я беру idToken и отправляю его на ресурс, защищенный Google Cloud IAP.
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
let token = user.authentication.idToken
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = httpMethod
request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: request, completionHandler: { data, response, error -> Void in
}).resume()
}
Я ожидал бы успешного ответа, но в настоящее время я получаю код ошибки HTTP 401 вместе с ранее упомянутым сообщением об ошибке.