标签: dotnetopenauth

存储DotNetOpenAuth信息和用户信息检索

这个问题是一个结构/设计问题,因为我无法找到执行任务的最佳方法.

在我的MVC应用程序中,我使用DotNetOpenAuth(3.4)作为我的登录信息提供者,只使用FormsAuthenticationcookie 的标准等.

DB中的当前用户表具有:

  • UserId(PK,uniqueidentifier)
  • OpenIdIdentifier(nvarchar(255))
  • OpenIdDisplay(nvarchar(255))
  • Displayname(nvarchar(50))
  • 电子邮件(nvarchar(50))
  • 电话号码(nvarchar(50))

由于UserId是用户的明确标识符(他们应该能够在以后更改其OpenId提供程序),因此它是其他表链接到(对于用户)的关键.

这是当前代码,在成功身份验证时,会创建临时用户并重定向到"创建操作".

        switch (response.Status)
        {
            case AuthenticationStatus.Authenticated:

                FormsAuthentication.SetAuthCookie(response.ClaimedIdentifier, false);

                var users = new UserRepository();
                if (!users.IsOpenIdAssociated(response.ClaimedIdentifier))
                {
                    var newUser = new DueDate.Models.User();
                    newUser.OpenIdIdentifer = response.ClaimedIdentifier;
                    newUser.OpenIdDisplay = response.FriendlyIdentifierForDisplay;

                    TempData["newUser"] = newUser;

                    return this.RedirectToAction("Create");
                }
Run Code Online (Sandbox Code Playgroud)

现在问题的症结在于:

  1. 是否response.ClaimedIdentifier存储了针对用户的正确信息?

  2. FormAuthentication.SetAuthCookie表单身份验证的首选方法吗?或者,还有更好的方法?

  3. 当我调用SetAuthCookie时,除了用户之外没有与用户相关的数据ClaimedIdentifier.如果我一直提到他们UserId,创建用户是个更好的主意,那么将其存储UserId在cookie而不是ClaimedIdentifier

  4. 如果我在很多地方使用UserId,我如何从cookie中检索它,或者将它存储在其他更合乎逻辑/有用的地方?

有点长的啰嗦,但我一直在努力找到最好的方法来做这个/

database asp.net dotnetopenauth

17
推荐指数
1
解决办法
2246
查看次数

如何使用服务帐户通过.NET C#访问Google AnalyticsAPI V3?

我意识到这个问题之前已经被问过,但是代码示例的方式很少,所以我再问一次,但至少有一点方向.

经过几个小时的搜索,我得出了以下部分实现.

namespace GoogleAnalyticsAPITest.Console
{
    using System.Security.Cryptography.X509Certificates;
    using DotNetOpenAuth.OAuth2;
    using Google.Apis.Analytics.v3;
    using Google.Apis.Analytics.v3.Data;
    using Google.Apis.Authentication.OAuth2;
    using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;

    class Program
    {
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();
            string Scope = Google.Apis.Analytics.v3.AnalyticsService.Scopes.Analytics.ToString().ToLower();
            string scopeUrl = "https://www.googleapis.com/auth/" + Scope;
            const string ServiceAccountId = "nnnnnnnnnnn.apps.googleusercontent.com";
            const string ServiceAccountUser = "nnnnnnnnnnn@developer.gserviceaccount.com";
            AssertionFlowClient client = new AssertionFlowClient(
                GoogleAuthenticationServer.Description, new X509Certificate2(@"7039572692013fc5deada350904f55bad2588a2a-privatekey.p12", "notasecret", X509KeyStorageFlags.Exportable))
            {
                Scope = scopeUrl,
                ServiceAccountId = ServiceAccountId//,ServiceAccountUser = ServiceAccountUser
            };
            IAuthorizationState state = AssertionFlowClient.GetState(client);
            AnalyticsService service = new AnalyticsService(authenticator);
            string profileId = "ga:xxxxxxxx";
            string …
Run Code Online (Sandbox Code Playgroud)

.net c# dotnetopenauth google-analytics-api oauth-2.0

16
推荐指数
2
解决办法
2万
查看次数

什么是好的openid选择器控件?

既然idselector已经升级到RPXNow并且你不能"只使用"选择器代码,那么什么是好的替代品呢?

我想在我正在使用的新网站上实现OpenId,但是用户在登录时会非常愚蠢,除非我为他们提供了一种简单的方法.

作为参考,我将使用.Net Open Id作为ASP.Net MVC Web应用程序的后台.


编辑

经过一些廉价的思考,使用rpxlib怎么

openid asp.net-mvc rpxnow dotnetopenauth

15
推荐指数
2
解决办法
3115
查看次数

DotNetOpenAuth:Webforms,入门

我试图弄清楚如何在我的webforms应用程序中使用DotNetOpenAuth(http://www.dotnetopenauth.net/)

我不明白从哪里开始.我的Login.aspx上有一个OpenIDSelector,可以让你选择google或Yahoo.您可以选择一个,然后弹出一个弹出窗口,然后让您登录.一旦你登录该程序挂起,因为它试图对数据库做一些事情???

我不能只使用一些控件(比如OpenIDSelector)并获回用户的身份验证,获取他们的ClaimedID并自己处理其余部分吗?

编辑:尝试在Webforms中开始使用OpenID?到这里...

https://github.com/DotNetOpenAuth/DotNetOpenAuth/wiki/Creating-an-openid-relying-party-%28programatically%29

c# asp.net openid dotnetopenauth

15
推荐指数
2
解决办法
5912
查看次数

RedirectingResponse.AsActionResult()不再存在,我可以用DotNetOpenAuth替换它吗?

我试图复制Rick在这里为OpenID实现做的事情:http: //www.west-wind.com/weblog/posts/899303.aspx

但是,当我到达这个部分时:

return req.RedirectingResponse.AsActionResult();
Run Code Online (Sandbox Code Playgroud)

然后我无法继续,因为AsActionResult不再存在,有没有替换它?

非常感谢

c# openid asp.net-mvc dotnetopenauth

15
推荐指数
1
解决办法
1350
查看次数

OAuth2和DotNetOpenAuth - 实施Google自定义客户端

我在使用DotNetOpenAuth和MVC4为谷歌实现自定义OAuth2Client时遇到问题.

我已经到了可以成功向Google端点发出授权请求的地步 https://accounts.google.com/o/oauth2/auth

谷歌询问用户是否允许我的应用程序访问他们的帐户.到目前为止都很好.当用户点击"确定"时,Google会按预期调用我的回调网址.

问题是当我在OAuthWebSecurity类上调用VerifyAuthentication方法时(Microsoft.Web.WebPages.OAuth)

var authenticationResult = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
Run Code Online (Sandbox Code Playgroud)

它始终使用IsSuccessful = false和返回AuthenticationResultProvider = ""

我已经查看了这个代码,OAuthWebSecurity类尝试从中获取Provider名称

Request.QueryString["__provider__"]
Run Code Online (Sandbox Code Playgroud)

但谷歌并没有在查询字符串中发回这些信息.我实施的另一个提供商(LinkedIn)正在发回提供商名称,一切正常.

我不知道我从这点可以做,除了抛弃Microsoft.Web.WebPages.OAuth类,只是使用DotNetOpenAuth没有他们,但我希望有人可能有另一种解决方案,我可以试试...

我进行了广泛的搜索,但似乎无法找到任何帮助...我发现很难找到人们做同样事情的例子,这让我感到很惊讶.

任何帮助非常感谢!

dotnetopenauth oauth-2.0 asp.net-mvc-4

15
推荐指数
1
解决办法
1万
查看次数

Dotnetopenauth oAuth服务提供商解释

我是oAuth地区的新手,并设置了DotNetOpenAuth来建立oAuth服务提供商.DotNetOpenAuth下载中提供的示例对我来说相当混乱......也许我不熟悉这些东西.有一个默认页面可以创建数据库并填充数据库.现在我浏览到login.aspx,它要求我输入一个openid,实际上我想使用DNN(实现DotNetOpenAuth),我想在另一个将成为oAuth消费者的网站上使用这些凭据.有人可以解释如何在DotNetOpenAuth样本中测试oAuth服务提供商吗?

asp.net dotnetnuke oauth dotnetopenauth

14
推荐指数
1
解决办法
6007
查看次数

我应该为ASP .NET MVC应用程序使用内置成员资格提供程序吗?

到目前为止,我一直在使用自定义成员资格提供程序进行身份验证.我即将开始使用MVC开发我的第一个网站.我想知道我是否应该使用ASP .NET MVC附带的内置成员资格提供程序,或者我是否应该创建自己的.我的网站需要与openid,facebook,google等集成以进行身份​​验证和api访问的openauth.我想知道根据我的需要使用内置的那么容易.

.net c# asp.net asp.net-mvc dotnetopenauth

14
推荐指数
3
解决办法
8460
查看次数

如何将OpenID集成到MVC4 Web API中

我正在编写一个使用MVC4的Web API,应该由多个客户端类型使用.我想使用OpenID进行身份验证.

我已经下载了DotNetOpenAuth NuGet包,但到目前为止所有示例都是针对客户端应用程序而不是API.

我的问题很简单.我想让客户端向我的API发送身份验证请求.API使用OpenID提供程序进行身份验证.然后,API会设置它需要的任何内容,以便在整个Web api调用中使用[Authorize]标记.

我知道在.NET应用程序中,可以调用FormsAuthentication.SetCookie,但这对于其他语言来说也是一个易于实现的解决方案吗?

问题简而言之.如何将OpenID集成到MVC4 web api中,以允许使用可由多种语言调用和使用的Authorize标记?

openid dotnetopenauth asp.net-mvc-4 asp.net-web-api

14
推荐指数
1
解决办法
4693
查看次数

无法获取网络凭据

所以我一直在使用DotNetOpenAuth一段时间,今天我需要添加对提供程序的支持,迫使我发送带有基本身份验证的密钥(我一直在使用旧版本,只有Post参数)

我试过用ClientCredentialApplicator.NetworkCredential,它没用.然后根据这里的建议,我已经做了我自己的ClientCredentialApplicator.

我仍然没有工作,我把断点放进去ApplyClientCredential,他们从来没有打过.

我升级到最新版本(4.3.0.0),应该有这个修复.

一切正常,但没有Authorization标题,远程服务器回答301错误(这让我认为它与提交相同的问题 - 授权信息未添加到请求,直到服务器回答Unauthorized和我正在使用的提供程序当没有Authorization标题时回答301

c# basic-authentication dotnetopenauth networkcredentials oauth-2.0

14
推荐指数
1
解决办法
2244
查看次数