【发布时间】:2016-01-07 19:01:31
【问题描述】:
阅读this question、@Pinpoint 的回答以及对 cmets 的进一步讨论,我很清楚,我们无法在使用 ASP.NET 5 开发的应用程序中添加身份提供程序。一种可能替代旧版 OAuthAuthorizationServerMiddleware然后由 AspNet.Security.OpenIdConnect.Server 提供,正如我在很多地方发现的那样。
现在,有一点我仍然不确定这一切,因为我真的不是安全专家,所以我对 OAuth 的了解不是很深。我的疑问如下:在使用 OAuth 保护一个 RESTful API 时是否可以使用外部身份提供者?
请注意,我不是谈论将社交登录添加到一个网站,我谈论的是在一个 RESTful API。
我的意思是,这让我有点困惑,因为我一直认为这应该是我的应用程序关心的问题。
所以我的问题是:当使用 OAuth 和 ASP.NET 5 时,是否可以使用外部身份提供者,而不是实现一个?如果可能的话,简而言之,这是如何工作的?我的意思是,我的应用仍然需要能够管理用户的身份,也就是说它需要管理声明等。
那样的话,如果真的可以的话,流程会怎样?外部身份提供者应该颁发令牌吗?但是我的应用如何能够验证这些令牌并管理用户身份?
编辑:我不确定的原因之一是,当我们使用UseOAuthAuthentication 扩展方法时,我们设置了一个回调路径,描述为
将返回用户代理的应用程序基本路径中的请求路径。当请求到达时,中间件会对其进行处理。
现在,如果我们正在开发一个网站,那么这确实很有意义。该人去那里,单击一个按钮以使用 Facebook 等提供商登录。用户被重定向到 Facebook 的页面,然后在他登录后,他被重定向到该网站的某个页面。
另一方面,对于 RESTful API,这是没有意义的。没有被重定向的概念。
这使得外部提供程序的使用似乎仅适用于网站,而不适用于 RESTful API。这是我问题的重点。
【问题讨论】:
-
但是第 3 方登录涉及打开第 3 方授权网页,例如“您要允许 xyz 应用访问您的帐户信息吗?”。你想如何克服这个问题?你需要在浏览器上下文中 afaik
标签: asp.net rest oauth asp.net-identity asp.net-core