前提・実現したいこと
バックエンドをAmplify(API Gateway、Cognito、Lambda)を使ってREST APIを作成しています
フロント側はiOSアプリ(Amplify Librariesを使用)です
フロント側のログインの処理はドキュメントを参考に作成することができました
https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios/
ログイン後のAPI呼び出しに苦労をしています。
API GatewayでCognitoオーソライザーを作成し
メソッドリクエストの認可の項目にこのオーソライザーを設定しています。
フロント側もDefine authorization rules にしたがって
amplifyconfiguration.json のauthorizationTypeに"AMAZON_COGNITO_USER_POOLS"を設定しています。
しかし、API Gateway側からかえって来るのは401 {“message”:“Unauthorized”}となってしまいます。
サーバーとの通信をパケットキャプチャソフトで見てみると
リクエストヘッダにはAuthorizationが付加されており
その中はログイン時付与されたAccess Tokenがセットされていることが確認できました。
オーソライザーのテストではIDTokenを入力することで200がかえって来ることを確認しているのですが
このAuthorizationヘッダーにIDTokenを設定する方法はないのでしょうか?
発生している問題・エラーメッセージ
401 {“message”:“Unauthorized”}
該当のソースコード
swift
1 func getItems() -> AnyCancellable { 2 let request = RESTRequest(path: “/items”) let sink = Amplify.API.get(request: request) 3 .resultPublisher 4 .sink { 5 if case let .failure(apiError) = $0 { 6 print(“Failed”, apiError) 7 } 8 } 9 receiveValue: { data in 10 let str = String(decoding: data, as: UTF8.self) 11 print(“Success (str)“) 12 } 13 return sink 14 }
amplifyconfiguration.json
json
1“api”: { 2 “plugins”: { 3 “awsAPIPlugin”: { 4 “apiade03cd6": { 5 “endpointType”: “REST”, 6 “endpoint”: “https://**********.execute-api.ap-northeast-1.amazonaws.com/dev”, 7 “region”: “ap-northeast-1", 8 “authorizationType”: “AMAZON_COGNITO_USER_POOLS” 9 } 10 } 11 } 12 }
補足情報(FW/ツールのバージョンなど)
Amplify 1.18.0
AWSiOSSDKV2 2.26.5
Xcode 12.4
あなたの回答
tips
プレビュー