标签: dotnetopenauth

Windows Live ID是OpenID提供商吗?

我听说过不同的事情.似乎微软尝试了测试服务,但我不知道它是否仍然可用,或者是否已投入生产.

如果Windows Live ID是OpenID提供程序,则端点在哪里?

openid windows-live-id dotnetopenauth single-sign-on

8
推荐指数
1
解决办法
4110
查看次数

Google OpenId:找不到OpenID端点(间歇性)

通常使用谷歌OpenId工作正常,每天数千次,然后它将开始间歇性出错并超时一小时左右(一些请求将验证,但不是全部).重复验证最终会起作用.

错误消息是:

Event code: 200000 
Event message: No OpenID endpoint found. : https://www.google.com/accounts/o8/id 

Sequence contains no elements
Run Code Online (Sandbox Code Playgroud)

添加log4net产量:

DotNetOpenAuth.Yadis:
Error while performing discovery on: "https://www.google.com/accounts/o8/id": 
DotNetOpenAuth.Messaging.ProtocolException:
 Error occurred while sending a direct message or getting the response. 
 ---> System.Net.WebException: The operation has timed out     
  at System.Net.HttpWebRequest.GetResponse()    
  at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse
     (HttpWebRequest request, DirectWebRequestOptions options) 
     in  c:\...\Dot...Core\Messaging\StandardWebRequestHandler.cs:line 127    
 --- End of inner exception stack trace ---     
  at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse
     (HttpWebRequest request, DirectWebRequestOptions options) 
     in c:\...\Dot...Core\Messaging\StandardWebRequestHandler.cs:line 175
  at DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse
     (HttpWebRequest request, DirectWebRequestOptions options)
     in c:\...\Dot...Core\Messaging\UntrustedWebRequestHandler.cs:line …
Run Code Online (Sandbox Code Playgroud)

asp.net openid dotnetopenauth google-openid

8
推荐指数
1
解决办法
3252
查看次数

如何使用DotNetOpenAuth强制OAuth2访问令牌到期

我正在基于DotNetOpenAuth实现OAuth2授权/资源服务器.我的服务器将发布具有很长使用寿命的访问令牌.这些令牌将用于iOS设备.流程,我看到的方式是这样的,1)要求用户在iOS设备上输入他们的用户名/密码2)请求访问令牌,授权类型为资源所有者密码凭证3)令牌被授予和存储在iOS设备上供将来使用.

现在用户不时被禁用.我想同时撤销令牌.我该怎么做呢?我怀疑我需要使用ICryptoKeyStore.RemoveKey方法,但不知道如何找到要删除的键.

注1:将来服务器将由第三方Web应用程序使用.

注2:要求获得资源所有者密码凭证的授权类型源于这样一个事实,即确定在iOS设备上实现浏览器重定向是不值得的.

更新1 源代码中的一些挖掘表明DotNetOpenAuth不支持强制令牌过期的能力.此外,在标准实现中,甚至不检查令牌的生存期.至于我能看到CALSS负责,这是StandardAccessTokenAnalyzer它忽略了LifetimeUtcCreationDate性能.此外,标准ResourceServer类似乎没有任何数据库访问编码,令牌有效性仅由令牌内容检查,所以似乎如果我需要添加使令牌过期的能力,我需要ResourseServer自己连接到数据库.我错过了什么吗?

更新2 我想我在这里找到了答案:https://groups.google.com/forum/#!topic /dotnetopenid/aLabu1ujkt4这不是我所希望的,我仍然有一些不清楚.例如,安德鲁写道:

然后,您的自定义类可以获取访问令牌,然后使用私有HTTP请求到授权服务器以验证令牌的持续有效性.

目前尚不清楚这种验证是如何发生的,因为它AccessToken不包括授权ID.这可能使查找目标授权记录变得困难.从理论上讲,我们可以尝试通过客户端,用户和发布时间的组合来查找它,但据我所知,并不能保证它们是唯一的.

.net dotnetopenauth oauth-2.0

8
推荐指数
1
解决办法
3475
查看次数

DotNetOpenAuth在修改后编译,但在运行示例项目时抛出运行时异常

我从GitHub下载了最新的DotNetOpenAuth代码,最初它无法构建.我通过运行以下命令解决了这个问题:

sn -Vr *,2780ccd10d57b246
Run Code Online (Sandbox Code Playgroud)

在这里找到:

http://www.dotnetopenauth.net/developers/contributing/quickstart-environment/

我继续对DotNetOpenAuth.AspNet项目进行了一些修改.编译得很好.然后我在样本下创建了一个MVC 4 Web项目来测试我的更改.该解决方案再次编译.但是,一旦我点击调试,我就会得到死亡的ASP.NET黄色屏幕,并出现以下错误:

无法加载文件或程序集"DotNetOpenAuth.AspNet"或其依赖项之一.强名称签名无法验证.程序集可能已被篡改,或者是延迟签名但未使用正确的私钥完全签名.(HRESULT异常:0x80131045)

MVC 4项目是从空模板创建的,因此没有对Microsoft.Web.WebPages.OAuth的引用

我错过了什么?我完成了上面链接中的其他步骤:

sn -k mykeyfile.pfx 
sn -i mykeyfile.pfx mykeycontainer
sn -p mykeyfile.pfx mykeyfile.pub 
sn -q -t mykeyfile.pub
sn -Vr *,<YourPublicKeyTokenHere>
Run Code Online (Sandbox Code Playgroud)

并修改了文件\ tools\DotNetOpenAuth.props,特别是使用新值的行:27,29,30

26. <SignAssembly>true</SignAssembly>
27. <PublicKeyFile Condition="'$(PublicKeyFile)' == ''">$(ProjectRoot)src\official-build-key.pub</PublicKeyFile>
28. <AssemblyOriginatorKeyFile Condition="'$(AssemblyOriginatorKeyFile)' == ''">$(PublicKeyFile)</AssemblyOriginatorKeyFile>
29. <KeyPairContainer Condition="'$(KeyPairContainer)' == ''">DotNetOpenAuth</KeyPairContainer>
30. <PublicKeyToken>2780ccd10d57b246</PublicKeyToken>
31. <DelaySign>true</DelaySign>
32. <SignedSubPath>signed\</SignedSubPath>
Run Code Online (Sandbox Code Playgroud)

c# dotnetopenauth visual-studio-2012

8
推荐指数
1
解决办法
1584
查看次数

如何更改OpenID的ReturnUrl?

当用户单击我的站点中需要身份验证的链接时,浏览器将重定向到登录页面.登录页面包含returnUrl查询字符串参数.问题是,如果用户使用OpenID进行身份验证,则提供程序会将用户重定向回登录页面,并且不包含returnUrl参数,这非常无聊,因为我将用户重定向到主页而不是尝试的页面.

我正在使用DotNetOpenID,有没有办法解决这个问题?

openid dotnetopenauth

7
推荐指数
1
解决办法
3826
查看次数

实现OpenID:识别用户

我工作的公司想要向外界发布内部网站,但也希望以一种简单的方式识别访问者.某些功能对所有访问者都可见,但大多数访问者必须可见.(并且一些功能仅限于管理员访问者.)虽然管理层正在考虑实施我们自己的身份验证系统,但我建议只使用已有的现有技术,并使用户名/密码的管理远离我们.(因为当我们讨论安全问题时,我们只是业余爱好者.身份验证需要非常好.)

所以我从Google 开始使用OpenID并检查了他们提供的库.看起来很容易使用,我可以获得告诉我用户已通过身份验证的令牌.但是,如何识别此用户,以便将我们的个人资料信息链接到他的ID /令牌/随便?

我知道我错过了一些东西,所以要保持简单:我只需要一些示例,说明如何使用Google验证访问者,然后获取一些可以用来永久链接到此用户的令牌.(因此,没有会话令牌.)然后,此令牌可用于用户填写他/她的个人资料.

.net c# openid authentication dotnetopenauth

7
推荐指数
1
解决办法
5006
查看次数

无法从DotNetOpenId响应中获取属性

我试图弄清楚如何通过open id验证后获取用户信息.如果我在呼叫时提供ClaimsRequest或FetchRequest并不重要

response.GetExtension<ClaimsResponse>

//Or

response.GetExtension<FetchResponse>

//Or

response.GetUntrustedExtension<ClaimsResponse>

// OR

response.GetUntrustedExtension<FetchResponse>
Run Code Online (Sandbox Code Playgroud)

我总是得到一个空引用.我正在添加信息,就像我看到的所有示例一样:

request.AddExtension(new ClaimsRequest{ Email = DemandLevel.Require });

// Or

var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
request.AddExtension(fetch);
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

更新

添加安德鲁建议的配置信息让我成为了那里的一部分.我终于得到一个ClaimsResponse,response.GetUntrustedExtension<ClaimsResponse>response.GetExtension<ClaimsResponse>仍然返回null.返回的ClaimsResponse实际上并不包含我请求的任何数据.这是请求:

var request = openId.CreateRequest(Request.Form["openid_identifier"]);
request.AddExtension(new ClaimsRequest
    {
        BirthDate = DemandLevel.Request,
        Country = DemandLevel.Request,
        Email = DemandLevel.Require,
        FullName = DemandLevel.Request,
        Gender = DemandLevel.Request,
        Language = DemandLevel.Request,
        Nickname = DemandLevel.Request,
        PostalCode = DemandLevel.Request,
        TimeZone = DemandLevel.Request 
      });

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

这是我的配置

  <uri>
    <idn enabled="All"/>
    <iriParsing enabled="true"/>
  </uri>
  <dotNetOpenAuth>
    <openid maxAuthenticationTime="0:05"> …
Run Code Online (Sandbox Code Playgroud)

openid dotnetopenauth

7
推荐指数
1
解决办法
2086
查看次数

OAuthWebSecurity.VerifyAuthentication IsSuccessful返回false我该如何确定原因?

我正在使用DotNetOpenAuth和MVC 4应用程序.所有突然的Google身份验证都失败了(MS正在运行).股票代码执行此操作:

[AllowAnonymous]
public ActionResult ExternalLoginCallback(string returnUrl)
{
    var result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
    if (!result.IsSuccessful)
    {
        return RedirectToAction("ExternalLoginFailure");
    }
Run Code Online (Sandbox Code Playgroud)

我知道这result.IsSuccessful是假的,但我怎么弄明白呢?result.Error一片空白.

我也看了这个页面使用log4net.我确实在本地开发盒上登录,但在将其部署到远程服务器时却没有.

log4net webconfig:

<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="RelyingParty.log" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="100KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date (GMT%date{%z}) [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <!-- Setup the root category, add the appenders and set the …
Run Code Online (Sandbox Code Playgroud)

dotnetopenauth asp.net-mvc-4

7
推荐指数
1
解决办法
2359
查看次数

DotNetOpenAuth.WebServerClient.XSRF-会话在回调期间发生变化

我正在尝试设置一个简单的Oauth2登录身份验证.但是我停留在抛出以下异常的回调:

   [ProtocolException: Unexpected OAuth authorization response received with callback and client state that does not match an expected value.]
   DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol(Boolean condition, String unformattedMessage, Object[] args) +426
   DotNetOpenAuth.OAuth2.WebServerClient.ProcessUserAuthorization(HttpRequestBase request) +771
Run Code Online (Sandbox Code Playgroud)

这里讨论了完全相同的问题

在我的例子中,SessionID保持不变,但DotNetOpenAuth.WebServerClient.XSRF-Session cookie在回调时更改了它的值.

执行:

    public void Authorize(HttpRequest request)
    {
        string callbackString = request.Url.AbsoluteUri;
        Uri callbackUri = new Uri(callbackString);;

        IAuthorizationState authorization = nimbleClient.ProcessUserAuthorization();

        if (authorization == null)
        {
            // Kick off authorization request
            nimbleClient.RequestUserAuthorization(returnTo: callbackUri);
        }
        else
        {
            //Get AccesToken
            Uri.EscapeDataString(authorization.AccessToken);
        }
Run Code Online (Sandbox Code Playgroud)

.net asp.net oauth dotnetopenauth

7
推荐指数
1
解决办法
1183
查看次数

Google OpenID提供商始终在Azure上失败

我正在尝试将Google OpenID与Azure上托管的MVC 4应用程序一起使用,但它仍然失败.虽然不是直接的.当我部署应用程序时,它一次又一次地完美运行.然后我离开它一段时间,通常是一天,但可能是一个小时,然后再试一次,它每次都失败.然后刷新,返回主页,该主页将您转到登录页面并再次运行.

错误是:

[InvalidOperationException: Sequence contains no elements]
   System.Linq.Enumerable.First(IEnumerable`1 source) +498
   DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.CreateRequest(Identifier userSuppliedIdentifier, Realm realm, Uri returnToUrl) +106

[ProtocolException: No OpenID endpoint found.]
   DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.CreateRequest(Identifier userSuppliedIdentifier, Realm realm, Uri returnToUrl) +303
   Tools.Helpers.GoogleApps.Login(Uri returnUrl) in c:\Users\Simon\Documents\Visual Studio 2012\Projects\Internal Utils\Website\Helpers\GoogleApps.cs:33
   Tools.Helpers.ExternalLoginResult.ExecuteResult(ControllerContext context) in c:\Users\Simon\Documents\Visual Studio 2012\Projects\Internal Utils\Website\Helpers\ExternalLoginResult.cs:25
   System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +33
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +613
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +263
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +230
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +28
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +20
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +20
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc azure dotnetopenauth google-openid

7
推荐指数
1
解决办法
798
查看次数