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

时间:2015-01-22 02:20:43

标签: javascript authentication oauth-2.0 asp.net-mvc-5

从Rick Anderson的精彩教程MVC 5 App with Facebook, Twitter, LinkedIn and Google OAuth2 Sign-on开始,特别是使用Google身份验证......

我扩展了Google身份验证的范围以包含DriveAPI。那部分一切正常,Fiddler显示googleapi access_token回来了。

我现在想要将google api令牌提供给我的javascript代码,以便我可以直接使用我的访问令牌调用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。我只是把它与一个块中的页面一起发送下来。 Dominick Baier说没关系。但我仍然想知道是否应该考虑另一种方法。

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

  1. 我应该如何获取驱动器api的令牌? (我想我已经 得到了这个工作)
  2. 我应该把它放在哪里?
  3. 我应该如何将其公开给我的javascript代码?
  4. 感谢您的关注。

1 个答案:

答案 0 :(得分:0)

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

真有帮助。特别是符号设置。 (比Reflector生成的pdbs更容易使用)

questions/24894789/how-to-renew-the-access-token-using-the-refresh-token

在球场有点帮助。

questions/20637674/owin-security-how-to-implement-oauth2-refresh-tokens