【问题标题】:How to authenticate users using g+ asp.net webform如何使用 g+ asp.net webform 对用户进行身份验证
【发布时间】:2015-03-07 22:06:33
【问题描述】:

我的网站使用 DotNetOpenAuth 对用户的 Gmail 帐户进行身份验证。在 login.aspx.cs 中,我使用用户的电子邮件来检查他们在数据库中的状态。

我需要将此更新为 google-plus,但我没有找到任何使用 DotNetOpenAuth 的示例。我能够使用我在此处找到的说明获取用户的电子邮件:https://developers.google.com/+/web/signin/add-button

我发现的示例建议使用隐藏的表单字段,但我知道这并不安全。您能否指出一些执行上述操作的示例,或推荐另一种方法?提前致谢。

【问题讨论】:

  • 我的 login.aspx 对此 js 文件有此引用 ''

标签: c# asp.net webforms google-plus dotnetopenauth


【解决方案1】:

我通过访问 Google 开发者控制台并设置项目解决了这个问题。 我配置了凭据、客户端 ID 密钥和 OAuth 同意屏幕。 接下来,我将这些行添加到我的登录页面。基本上,我获取用户的 gmail 地址并将其传递到我的数据库以确认他们的权限。

            <!--this is my google plus button-->
            <fieldset style="padding-left: 12px; width: 526px;">
                <legend style="font-family: Tahoma, Geneva, Verdana, Arial, Sans-Serif; font-size: small; font-weight: normal; ">
                    Welcome to my web app...
                </legend>
                    <br />
                <span id="signinButton">
                    <span
                    class="g-signin"
                    data-callback="LoginCallback"
                    data-clientid="client id key goes here"
                    data-cookiepolicy="single_host_origin"
                    data-requestvisibleactions="http://schema.org/AddAction"
                    data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email">
                    </span>
                </span>
                <br />
            </fieldset>

        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
            <script language="javascript" type="text/javascript">
                function LoginCallback(authResult){
                    if (authResult['status']['signed_in']){
                        // get user's email address
                        gapi.client.load('oauth2', 'v2', function (){
                            gapi.client.oauth2.userinfo.get().execute(function (resp){
                                var email = resp.email;
                                // call codebehind webmethod to validate user email in DB                                    
                                PageMethods.AuthenticateMember(email, MemberPass(email), MemberFail);
                            });
                        });
                    }
                    else{
                        console.log('Sign-in state: ' + authResult['error']);
                    }
                }

【讨论】:

    【解决方案2】:

    尝试使用Google+ quickstart for .NET。这个示例应用做了两件事:

    1. 使用 Javascript 客户端授权客户端使用 Google API。
    2. 将授权代码传递给服务器以授权服务器进行后端 API 调用。

    您应该能够从那里开始作为授权基础的示例。

    对于身份验证,您需要检索 ID 令牌和 pass that ID token from the client to the server to authenticate the user

    【讨论】:

    • 感谢 Glass,现在正在查看。非常感谢。
    • 此示例应用程序需要进行许多更改才能使用典型的网络表单应用程序。我不会推荐它
    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 2010-10-30
    • 2019-05-02
    • 2013-01-19
    • 2018-12-08
    相关资源
    最近更新 更多