相关疑难解决方法(0)

ASP.NET核心中基于令牌的认证

我正在使用ASP.NET Core应用程序.我正在尝试实现基于令牌的身份验证,但无法弄清楚如何在我的情况下使用新的安全系统.我经历了一些例子,但他们对我没什么帮助,他们使用的是cookie身份验证或外部身份验证(GitHub,Microsoft,Twitter).

我的场景是什么:angularjs应用程序应该请求/tokenurl传递用户名和密码.WebApi应授权用户并返回access_tokenangularjs app在以下请求中使用的内容.

我找到了很好的文章,关于在当前版本的ASP.NET中实现我所需要的 - 使用ASP.NET Web API 2,Owin和Identity进行基于令牌的身份验证.但对我来说,如何在ASP.NET Core中做同样的事情并不明显.

我的问题是:如何配置ASP.NET Core WebApi应用程序以使用基于令牌的身份验证?

c# authentication access-token asp.net-web-api asp.net-core

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

使用OWIN标识从多个API客户端注册Web API 2外部登录

我想要以下架构(我已经为这个例子编写了产品名称):

在一台服务器 http://api.prettypictures.com 上运行的Web API 2应用程序

MVC 5客户端应用程序在另一台服务器上运行 http://www.webpics.com

我希望www.webpics.com客户端应用程序使用Pretty Pictures API:

  • 使用用户名和密码注册新帐户
  • 在Facebook/Google/Twitter/Microsoft注册新帐户
  • 登录
  • 检索图片

所有上述工作除了在Facebook,Google等注册外部账户外.

我无法确定从API的单独客户端用户创建外部帐户的正确流程.

我已经研究了认证流程中可用的大多数文档,如下所示: 在此输入图像描述

我已经在OWIN的新身份模型上阅读了我所能做的一切.

我已经在Visual Studio 2013中检查了SPA模板.它演示了如何完成我需要的大部分工作,但仅限于客户端和API在同一主机上时; 如果我希望多个客户端访问我的API并且能够让用户通过Google等注册,那么它就无法正常工作,而且我可以告诉OWIN身份验证流程中断.

到目前为止流程如下:

  • 用户浏览www.webpics.com/Login
  • www.webpics.com调用api.prettypictures.com/Account/ExternalLogins(用RETURNURL设置回去在回调www.webpics.com),并显示最终链接到用户
  • 用户点击"Google"
  • 浏览器使用提供者的名称重定向到api.prettypictures.com/Account/ExternalLogin等.
  • API的ExternalLogin操作实例化对google.com的挑战
  • 浏览器被重定向到google.com
  • 用户输入用户名和密码(如果他们尚未登录google.com)
  • google.com现在提供安全许可:"api.prettypictures.com"想要访问您的电子邮件地址,姓名,妻子,孩子等.这样可以吗?
  • 用户点击"是"并使用Google设置的Cookie将其带回api.prettypictures.com/Account/ExternalLogin.

这是我被卡住的地方.接下来应该发生的是以某种方式通知客户端应用程序用户已成功通过google.com进行身份验证,并获得一次性访问代码以便稍后交换访问令牌.如有必要,客户端应用程序应该有机会提示用户输入与google.com登录相关联的用户名.

我不知道如何促进这一点.

实际上,此时浏览器在谷歌回调后最终坐在api.prettypictures.com/Account/ExternalLogin端点上.该API已登录Google,但客户端不知道如何处理该问题.我应该将该饼干送回www.webpics.com吗?

在SPA应用程序中,它通过AJAX完成,google.com将返回一个令牌作为URL片段,它一切运行良好,因为它都在一个域上.但这远远超过了拥有多个客户可以充分利用的"API"的重要性.

救命!

asp.net-mvc oauth-2.0 owin asp.net-identity asp.net-web-api2

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