我的产品具有简单的REST API,因此产品的用户可以直接与产品功能集成,而无需使用我的Web用户界面.
最近,我一直对各种第三方感兴趣,他们将桌面客户端与API集成,以允许我的产品用户使用该第三方应用程序访问他们的数据.
我已经看到想要使用Twitter的应用程序使用Twitter托管的登录页面进行身份验证,该登录页面授予特定应用程序访问该用户数据的权限.单击"允许"或"拒绝"按钮,验证过程完成.Facebook使用与我能说的最佳机制相同的机制.
经过进一步研究,这似乎是OAuth在行动,并且看到我的API是基于.Net的,我想我应该使用DotNetOpenAuth并提供类似的机制.不幸的是,样本的文档很少(如果有的话),我在网上找到的唯一教程似乎专注于帮助您为用户提供登录机制,以便他们可以使用第三方提供商登录您的网站.
我真正想做的是让我的REST API处理我的Web应用程序的所有核心身份验证和业务逻辑,并且我的Web应用程序本质上是另一个仅通过OAuth使用API的应用程序.用户可以直接使用他们的用户名和密码在网站上进行身份验证,也可以通过第三方提供商(如MyOpenID或Facebook)进行身份验证,然后网站会以某种方式使用返回的令牌对REST API进行身份验证.

它基本上看起来我需要我的API以某种方式托管OAuth服务,但也让用户使用第三方OAuth服务.我不禁想到,我对OAuth没有足够的把握来决定我是否过于复杂化,或者我正在尝试做的事情是好事还是坏事.
有人能给我至少一个我需要采取的步骤的概述,或者我应该考虑做些什么来实现这一目标?或者指点一些教程?或者提出我的建议并告诉我,我(在架构上)这一切都是错的?
我在我的网站上实现了OpenID,但我很难找到OpenID提供者URL列表.我觉得这很容易找到,但是我已经在网上搜索过,只发现了一小撮,大多是偶然的.
是否有资源列出可用的提供商及其身份验证URL?
编辑:这是我到目前为止找到的.我没有尝试过所有这些,所以如果有任何错误,请告诉我.
StackExchange https://openid.stackexchange.com
Google https://www.google.com/accounts/o8/id - 2014年5月已弃用 - 2015年4月关闭Flickr http://www.flickr.com/username
AOL http://openid.aol.com/username
Blogspot https://www.blogspot.com/
LiveJournal http://username.livejournal.com/
Wordpress https://username.wordpress.com/
VerisignLabs https://pip.verisignlabs.com/ - 2016年9月关闭
MyOpenID https://www.myopenid.com/ - 计划于2014年2月关闭MyVidoop https://myvidoop.com/
Technorati https://technorati.com/people/technorati/username/
我几乎让OpenID使用DotNetOpenAuth库.现在我希望用户能够使用Facebook和Twitter登录.
这需要OAuth我正在寻找有关如何使用DotNetOpenAuth OAuth的教程.
我在寻找一些关于如何做到这一点的简单教程时遇到了麻烦.
有人可以帮忙吗?
我正在OAuth 1.0(a)使用DotNetOpenAuth(NuGet包DotNetOpenAuth.OAuth.ServiceProvider, version = 4.1.4.12333)构建授权服务器.服务器托管在ASP.NET应用程序中,但这与问题无关.
我ServiceProvider的配置如下:
private ServiceProvider GetServiceProvider()
{
var baseUri = "http://myauth.com";
return new ServiceProvider(
new ServiceProviderDescription
{
UserAuthorizationEndpoint = new MessageReceivingEndpoint(
new Uri(baseUri + "/get_request_token"),
HttpDeliveryMethods.GetRequest
),
RequestTokenEndpoint = new MessageReceivingEndpoint(
new Uri(baseUri + "/authorize"),
HttpDeliveryMethods.PostRequest
),
AccessTokenEndpoint = new MessageReceivingEndpoint(
new Uri(baseUri + "/get_token"),
HttpDeliveryMethods.PostRequest
),
ProtocolVersion = ProtocolVersion.V10a,
TamperProtectionElements = new ITamperProtectionChannelBindingElement[]
{
new PlaintextSigningBindingElement(),
new HmacSha1SigningBindingElement(),
},
},
tokenManager,
new OAuthServiceProviderMessageFactory(tokenManager)
);
}
Run Code Online (Sandbox Code Playgroud)
我的get_request_token端点的相关部分如下所示: …
我一直在使用DotNetOpenAuth工作.首先我们使用5.0.0-alpha1,但我们切换到v4.0.30319,因为我们找不到导致我们问题的原因.
我们在Visual Studio 2013的.NET 4.5.1建立一个C#的Web API项目RC与MVC 5 RC我们已经实施了IAuthorizationServerHost,INonceStore和ICryptoKeyStore.
我们遇到的问题是以下情况:
public class TokensController : Controller
{
private readonly AuthorizationServer authorizationServer = new AuthorizationServer(new MyAuthorizationServer());
/// <summary>
/// This action will handle all token requests.
/// </summary>
/// <returns>The action result that will output the token response.</returns>
[HttpPost]
public ActionResult Index()
{
var outgoingWebResponse = this.authorizationServer.HandleTokenRequest(this.Request);
return outgoingWebResponse.AsActionResult();
}
}
Run Code Online (Sandbox Code Playgroud)
return outgoingWebResponse.AsActionResult();与起源的方法DotNetOpenAuth.Messaging和MessagingUtilities静态类.该DotNetOpenAuth.Core(包含此代码)引用MVC 4.0和HttpResponseMessageActionResult类从继承ActionResult.
这意味着当前版本的DotNetOpenAuth与MVC 5不兼容.编译并尝试运行它只会出现500个错误. …
我正在使用dotnetopenauth 3.2来实现Openid,并且无法弄清楚如何让Google在声明响应中传递电子邮件地址.我知道Google不支持简单注册,但我无法确定他们支持的内容.
对这个问题的警告是我刚刚开始学习OpenID,我知道我对规范没有扎实的把握,我认为这导致了我的困惑.
任何帮助,将不胜感激!
我想了解如何从应用的OAuth用户库DotNetOpenAuth在ASP.NET MVC的背景下.
oAuth对我来说是新的,图书馆看起来并不简单.有没有人在ASP.NET MVC中有一个利用这个库的样本?
我正在构建一个ASP.NET MVC站点,我想使用DotNetOpenAuth来实现OpenID登录(我完全放弃了基于用户名/密码的登录).
到目前为止,我一直在使用角色系统,配置文件系统和基本注册系统,使用ASP.NET成员资格提供程序编写默认用户名/密码系统的代码.现在,在我迁移到OpenID时,我预见到了一些问题,特别是与ASP.NET成员资格提供程序提供的成员控制接口.
看看DotNetOpenAuth MVC示例,我看到对FormsAuthentication系统的唯一引用是创建一个AuthCookie以后再调用FormsAuthentication.SignOut().因此,我不确定是否可以在此OpenID系统中使用ASP.NET成员资格提供程序函数,尽管示例代码调用的另一部分User.Identity.IsAuthenticated.
这个OpenID系统是否会与ASP.NET Membership Provider接口?如果没有,我能以某种方式解决这个问题吗?
如果以上是完全不可能的,我认为我的下一步行动就是滚动我自己的数据库表并手动编写代码以便从我的帐户控制器中使用它们.我注意到Stack Exchange Data Explorer采用了这种方法,但这是正确的做法吗?
编辑:只是为了确保我使用正确的术语,"ASP.NET成员资格提供程序",我指的是使用该aspnet_regsql.exe工具生成的表的提供程序.
我开始构建一个需要用户帐户的新Web应用程序.现在我有一个OpenID,我正在使用这个网站,我认为如果我可以在我的应用程序中使用OpenID进行身份验证将会很酷.有没有关于如何将OpenID与ASP.NET站点集成的好教程?
从MVC 4升级到MVC 5后,我的应用程序(从Visual Studio中启动时)会出现以下错误.值得注意的是,我在同一个项目中托管MVC5和WebAPI2项目,因为可能存在干扰.我还安装了dotnetopenauth nuget包(我已经删除了):
Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /login.aspx
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样,因为过滤器或控制器上没有设置授权属性.
Global.asax中:
public class MvcApplication : HttpApplication {
protected void Application_Start() {
IDependencyInjectionBuilder dependencyInjectionBuilder = new DependencyInjectorBuilder();
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly); …Run Code Online (Sandbox Code Playgroud) dotnetopenauth ×10
c# ×6
asp.net-mvc ×5
openid ×5
asp.net ×3
oauth ×2
api ×1
oauth-2.0 ×1
rest ×1