是否可以仅使用谷歌作为身份验证服务器而不使用任何API以及如何使用

时间:2016-07-06 07:44:45

标签: rest authentication google-oauth google-authentication

我有一个C#桌面应用程序,可以通过REST API调用对服务器(如果重要的话,使用框架2.5)起作用。 我想使用gmail帐户验证从客户端(桌面应用程序)到服务器的调用。 现在在显示流程之前,有一些澄清:

  • 客户端应用程序有时无人值守(我从其他地方收到用户名+密码) - 意味着显示用户同意屏幕不是一个选项
  • 我对任何Google API都不感兴趣!我只想访问我的服务器REST API。 我只需要Google进行身份验证阶段

想要的流程:

在客户端:

  • 从用户那里获取用户名和密码(如上所述,可以非交互方式完成)
  • 针对谷歌验证用户并获取令牌
  • 向服务器发送包含令牌
  • 的请求

在服务器中:

  • 将令牌“解码”回用户名
  • 检查此用户是否经过身份验证以执行呼叫并采取相应措施

如果可能的话 - 你会怎么做?

1 个答案:

答案 0 :(得分:0)

您首先需要在Google API Manager上设置一个新项目(该内容Guid来自元标记下方的内容)。

在客户端,您可以使用Google's Sign-In button模板初始化登录信息&授予权限进程:

<meta name="google-signin-client_id" content="29chqvu3ghgtte1.apps.googleusercontent.com">

<script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script>

<div id="google-signin-button"
     class="g-signin2"
     data-width="170"
     data-height="30"
     data-onsuccess="onSignIn"
     data-onfailure="onSignInFailure">
</div>
function onSignIn(googleUser) {
    var profile = googleUser.getBasicProfile();
    var idToken = googleUser.getAuthResponse().id_token;
}

然后您只需将此idToken发送到server / api,您就可以在Google端点上进行GET验证此令牌https://www.googleapis.com/oauth2/v3/tokeninfo?id_token={0}。当然有numerous other ways,您可以在其中验证令牌(当然,实际上可以获得它的句柄)。

这将是它的要点(不包括非交互式用户登录 - 请记住,您还需要用户授予权限)。