MVC 5 SPA 应用程序谷歌身份验证令牌处理

MVC 5 SPA Application Google Authentication token handling

本文关键字:身份验证 令牌 处理 谷歌 应用程序 SPA MVC      更新时间:2023-09-26

从Rick Anderson的优秀教程MVC 5应用程序开始,使用Facebook,Twitter,LinkedIn和Google OAuth2登录,特别是使用Google身份验证...

我扩展了Google身份验证的范围,以包括DriveAPI。这部分工作正常,Fiddler显示googleapi access_token回来了。

我现在想为我的javascript代码提供Google api令牌,以便我可以直接使用我的访问令牌调用Google驱动器api。

我可以从GoogleoAuth2AuthenticationProvider获取令牌

GoogleOAuth2AuthenticationOptions googleOptions = new GoogleOAuth2AuthenticationOptions() {
            ClientId = ConfigurationManager.AppSettings["ClientId"],
            ClientSecret = ConfigurationManager.AppSettings["ClientSecret"],
            SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie,
            Provider = new GoogleOAuth2AuthenticationProvider() {
                OnAuthenticated = async context => {
                    context.Identity.AddClaim(new Claim(GoogleApiAccessTokenClaimType, context.AccessToken));
                }
            },
        };

显然,我需要将其存储在某个地方。 我以为索赔会自动保留在.AspNetApplicationCookie,即使再次读取此cookie,我也看不到检索我添加的任何声明的简单方法。

这让我觉得我应该存储它 AspNetUser 表。 但是,如果一旦读取和解密就可以从cookie中获得它,这似乎是多余的。

现在假设我有令牌,我应该如何将其传达给我的 javascript。 我一直在将其与页面一起发送到一个块中。 多米尼克·拜尔说没关系。 但我仍然想知道我是否应该考虑另一种方法。

所以我总结的问题是...

  1. 我应该如何获取驱动器 API 的令牌?(我想我已经得到了这个工作)
  2. 我应该把它放在哪里?
  3. 我应该如何向我的JavaScript代码公开它?

感谢您的关注。

另外两个问题和讨论涵盖了大部分细节。

真的很有帮助。 尤其是符号设置。 (比反射器生成的 pdbs 更容易使用)

问题/24894789/如何续订访问令牌使用刷新令牌

有点帮助,在球场。

问题/20637674/owin-security-how-to-implement-oauth2-refresh-tokens