使用OpenID Connect验证Android应用程序的后端呼叫

时间:2014-11-07 15:03:02

标签: java android oauth-2.0 google-api google-openid

基于this blog article我设法在后端使用Google OAuth2 API和示例Checker类验证了后端Google帐户的Android App客户端令牌。

我注意到GoogleIdToken.Payload#getIssuee()已被弃用。 JavaDoc解释说这个方法是

  

“计划在1.18中删除,使用   IdToken.Payload.getAuthorizedParty()代替。“

IdToken类使用OpenID Connect而不是OAuth 2.0,我需要将哪些修改应用于示例Checker类以使用OpenID Connect?

1 个答案:

答案 0 :(得分:0)

无需进行任何更改:OpenID Connect是OAuth 2.0的扩展;您只需将代码更改为:

if (mVerifier.verify(token)) {
    GoogleIdToken.Payload tempPayload = token.getPayload();
    if (!tempPayload.getAudience().equals(mAudience))
        mProblem = "Audience mismatch";
    else if (!mClientIDs.contains(tempPayload.getAuthorizedParty()))
        mProblem = "Client ID mismatch";
    else
        payload = tempPayload;
}

getIssuee方法的实现已经使用了同样的调用: https://code.google.com/p/google-api-java-client/source/browse/google-api-client/src/main/java/com/google/api/client/googleapis/auth/oauth2/GoogleIdToken.java

发生了什么事情,谷歌已经在GoogleIdToken类中实施了OpenID Connect avant la lettre的相关部分,这是他们的OAuth 2.0实现的一部分。从长远来看,最好使用Google自那时起添加的标准(非Google特定)OpenID Connect类: https://code.google.com/p/google-oauth-java-client/source/browse/google-oauth-client/src/main/java/com/google/api/client/#client%2Fauth%2Fopenidconnect%253Fstate%253Dclosed
但只有当整个班级被标记为已弃用时才会变得紧急。