我正在創建一個API(Restlet,GAE)並實現了用於身份驗證的OpenId和OAuth2來保護對API的訪問。當從我構建的客戶端Web應用程序進行測試時,一切都很好。當用戶點擊需要訪問該API的Web應用程序的一部分時,系統會要求用戶通過OpenId登錄,然後被要求授予對該Web應用程序的訪問權限以從API中獲取資源。使用OAuth2時獲取用戶信息 - 是否合理?
但是,我注意到網絡應用程序不知道用戶是誰(!)。所有的網絡應用程序都是一個身份驗證令牌。因此,Web應用程序不能說「你好,用戶名」,因爲它不知道用戶是誰。
隨着技術的Restlet,認證基本上是: //驗證碼 OpenIdVerifier驗證=新OpenIdVerifier(OpenIdVerifier.PROVIDER_YAHOO); verifier.addRequiredAttribute(AttributeExchange.EMAIL);
Authenticator au = new MyRedirectAuthenticator(getContext(),verifier,null);
雖然下面的把手既認證和授權的OAuth2: //認證+ OAuth的代碼: OAuthParameters PARAMS =新OAuthParameters( 「2345678901」, 「secret2」,「HTTP://本地主機:8888/V3/「,角色); OAuthProxy local = new OAuthProxy(params,getContext());
最初我只在我的web應用程序中使用「Authentication + OAuth」,身份驗證發生在「隱身」(如上所述)。
我覺得解決「問題」的一個辦法是,如果web應用程序處理「可見」的身份驗證。所以我將驗證碼添加到了網絡應用程序中。流程看起來與用戶完全相同,但Web應用程序能夠捕獲用戶信息(電子郵件),一切正常。與「兩個」代碼似乎也沒有任何衝突。
解決此問題的另一種方法是向API添加一些內容,以返回與authToken(Twitter的verify_credentials)關聯的用戶信息。
我的問題:我採取的方法合理嗎?我應該使用Twitter方法嗎?或者完全不同的東西? (我對所有這些東西都很陌生,所以很難弄清楚我是否選擇了一種似乎能夠工作的解決方案,而後來纔打出了一堵磚牆)。