我在一家大量使用Google Apps和现在ChromeOS设备的教育机构工作。我们已经开始实施的项目是开发Chrome扩展程序(可能是多个),这将扩展我们在Windows环境中的功能。这些只能在我们的域和我们的设备上使用,一般情况下不可用。
我们内置了一个基于HTTP / JSON的API,它提供了各种详细信息,例如我们的MIS(再次,内部构建)的提醒和其他内容,并可以为弹出窗口提供此信息等。可以通过Windows下的NTLM身份验证确保API知道当前用户是谁。
我需要某种方式让API能够知道用户从Chrome设备访问时的身份。这意味着扩展需要能够以安全的方式告诉API用户是谁。如果API可以建立登录用户的Google Apps电子邮件地址,则可以确定该人员来自我们的数据库。我的问题是,我该如何做到这一点?
已经考虑并拒绝的一些解决方案:
此外,用于登录的Google OAuth 2.0似乎特定于在浏览器中显示的网站。这需要静默处理。
我理解这是一个非常模糊的问题,但任何有待解决的非常类似问题的建议或例子都会受到赞赏。 其核心是:如何使用Google凭据对使用非Google API的Chrome扩展程序进行身份验证? (API可以扩展为以任何必要的方式支持它。)
进一步的细节:
答案 0 :(得分:1)
您可以执行以下操作:
在Chrome扩展程序中,使用Identity API获取此应用程序的身份验证令牌并将其发送到您的API。您只需要此范围:https://www.googleapis.com/auth/userinfo.email
在您的API方面,每次收到令牌时,请访问以下URL(将示例中的访问令牌替换为扩展程序发送的令牌):
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.iAXXXXXXXXXXXXXXi-mrflhzc-X-U14eb
你会得到这样的东西:`
{
"issued_to": "407408718192.apps.googleusercontent.com",
"audience": "407408718192.apps.googleusercontent.com",
"user_id": "1170123456778279183758",
"scope": "https://www.googleapis.com/auth/userinfo.email",
"expires_in": 3585,
"email": "someone@yourdomain.com",
"verified_email": true,
"access_type": "offline"
}
确保受众群体是Chrome客户端ID(非常重要),并且您有电子邮件!