2016-11-11 39 views
1

我們的移動應用程序使用未經身份驗證的認證流來授權設備。我們對後端使用Oauth身份驗證,後者需要不記名令牌。爲了得到這個不記名令牌,我們打算在客戶端上調用api網關,然後代理到將返回一個不記名令牌的oauth服務提供者中,而不是保存客戶端的密鑰/祕密。客戶端將使用此不記名令牌進行進一步的後端調用。用於未經身份驗證的認證的API網關和Oauth身份驗證

我們測試了http代理,它從api網關控制檯運行良好。我們遇到的問題是授權人。我們的授權機制是認知用戶池。爲了測試授權者,控制檯要求輸入身份標識。我們不確定什麼是身份令牌。試圖用cognitoId進行測試,通過aws iOS sdk獲取未認證的cognito用戶的openToken,但它們都不起作用。來自日誌的消息是「未經授權的請求:」

有人可以請建議一個解決方案嗎?

回答

0

聽起來你正在看的是從聯合身份生成的令牌。你在你的應用中設置了user pools嗎?當用戶登錄時,會得到3個令牌 - id令牌,訪問令牌和刷新令牌。該id令牌是你需要的。這必然意味着未經認證將會有點棘手,因爲您必須登錄才能獲得此信息。

+0

謝謝傑夫。當你說登錄時你是什麼意思?因爲它是未經認證的,我們所做的就是這樣的: 讓credentialsProvider = AWSCognitoCredentialsProvider(regionType:,identityPoolId:identityPoolId)。 credentialsProvider將在其上有一個identityId,它只是cognitoId。它也具有包含密鑰/祕密和會話令牌的憑證對象。 此外,yes用戶池已爲我們的應用程序設置 – PGA

+0

基本上,您不能在不登錄的情況下將用戶池用作授權機制。未經身份驗證的訪問和用戶池是兩個互斥的東西。您必須登錄到用戶池才能使用用戶池。 –

+0

有意義,必須研究如何做到這一點,因爲它現在是未經認證的 – PGA