2

我正在用 asp 做一个网站,它使用 Identity (v2.0) 以及一个通过 Web API 连接到网站的 Android 应用程序。

我已将 Identity 配置为使用 Google OAuth 登录,并且运行良好。现在我正在尝试为应用程序制作一个 Web API,我还需要对移动用户进行身份验证。

我已经达到了配置身份来管理 api 的不记名令牌的地步。但是要执行登录,我发现的唯一方法是通过用户和密码,如文档所述:

grant_type=password&username=user&password=pass

或通过网络执行 OAuth 质询。

由于 Android 还管理 Google OAuth。有没有办法配置身份以使用 Google Oauth 执行登录?

我既没有找到管理外部不记名令牌的方法,也没有找到使用 Google 身份验证令牌使用带有身份的 Web Api 进行签名的方法。

也许我误解了什么。

提前致谢。

4

1 回答 1

0

好的,不知何故,我找到了方法。

  1. 在 Android 中,使用范围 Audience:server: 获取 ID 令牌,如 Google“Accounts Authentication and Authorization”文档中所示。

  2. 将 Web API 令牌端点作为用户发送电子邮件,并将密码作为令牌发送。

    grant_type=password&username={email}&password={GoogleToken}

  3. 在服务器中 OAuthAuthorizationServerProvider 的扩展类中,我将令牌验证从 github repo googleplus/gplus-verifytoken-csharp 添加到方法 GrantResourceOwnerCredentials

  4. 如果令牌有效,我可以填充 UserLoginInfo 并使用 UserManager 查找用户。

然后正常的身份验证继续进行,并且用户以正常的身份进行身份验证。

无论如何,我认为必须有一种更优雅的方式来做到这一点。

于 2017-07-27T08:27:01.190 回答