【问题标题】:Consuming Asp.Net Core Identity based site: how to handle authentication on mobile app?使用基于 Asp.Net Core Identity 的站点:如何在移动应用上处理身份验证?
【发布时间】:2016-11-16 20:56:36
【问题描述】:

我在 ASP.Net Core 中有一个基于 Identity 的网站,我找不到如何从 c# 应用程序与其服务交互。 该网站允许通过电子邮件+密码或 facebook 登录,我想通过应用程序进行相同的操作,但当然是通过 API,而不是移动网站。

我有点困惑,我可以找到不同的解决方案,例如:

OAuth2.0, OpenId Connect and IdentityServer 或者只是OpenId Connect

第二个链接好像是我要找的,但我有点困惑,和描述中提到的服务OpenIdDict-Core有什么区别?

哪一个应该是正确的解决方案?我只是愿意使用密码或外部登录进行身份验证,然后使用 C# 客户端(.Net 标准)使用 API。

谢谢!

【问题讨论】:

  • 我发布了一些关于 ASOS/OpenIddict 的详细信息,希望对您有所帮助。请注意,我故意忽略了您的第二个问题,因为它“主要基于意见”(而且由于我是 ASOS 和 OpenIddict 背后的主要人物,所以我并不是很客观)。
  • 我想 OpenIddict 对我来说是正确的解决方案,我将进一步调查/测试 :) 感谢您的澄清! (包括 ASOS 和 OpenIddict 被某人链接在一起的事实)

标签: authentication oauth-2.0 asp.net-core asp.net-identity asp.net-core-mvc


【解决方案1】:

第二个链接好像是我要找的,但我有点困惑,和描述中提到的服务OpenIdDict-Core有什么区别?

AspNet.Security.OpenIdConnect.Server(代号 ASOS)相当于 ASP.NET Core 世界中 OWIN/Katana 的 OAuthAuthorizationServerMiddleware:它是一个低级 OpenID Connect 框架,可用于实现您自己的服务器,使用相同的事件-based 方法作为 ASP.NET Core 安全中间件的其余部分。

ASOS 提供您需要的所有原语(例如 OpenIdConnectRequestOpenIdConnectResponse)并为您处理大部分协议细节(例如请求验证或令牌生成),但您可以自行决定是否实现客户端身份验证等内容或用户身份验证。

ASOS 并不适合所有人:它专门设计用于提供低级、协议优先体验并尽可能灵活:如果您对如何使用OAuth2/OpenID Connect 可以正常工作,那么它可能不适合您。

有关 ASOS 的更多信息,您可以阅读此系列博文:http://kevinchalet.com/2016/07/13/creating-your-own-openid-connect-server-with-asos-introduction


OpenIddict 是一个基于 ASOS 的 OpenID Connect 服务器库:它为您处理客户端身份验证或令牌撤销等事情,并提供您需要的接口(它还带有默认的基于 EF 的存储)。

与 ASOS 不同,它是一个自以为是的服务器,其主要目标是通过拒绝从安全角度来看不被视为“安全”的所有内容(例如,它将拒绝授权)来鼓励您做正确的事情如果客户端是机密客户端,则请求包含response_type=token)。

OpenIddict 背后的理念是,您只需实现用户身份验证,这可以在您自己的 MVC 控制器中使用 ASP.NET Core Identity 来完成。其他一切都被认为是“危险的”,并由 OpenIddict 故意隐藏和处理。

如果您想了解有关 OpenIddict 的更多信息,我建议您阅读这篇博文:https://blogs.msdn.microsoft.com/webdev/2016/10/27/bearer-token-authentication-in-asp-net-core/

【讨论】:

  • 我会选择 OpenIddict,我希望它能维持很多年 :D 你能详细说明(每个只有一句话)3 个样本对应的内容以及它们的不同之处吗?授权码流、隐式流和密码流
  • @Jean 我建议阅读kevinchalet.com/2016/07/13/… 以了解有关不同流程的更多信息。
  • 谢谢,它似乎回答了这个问题;)我明天会更详细地检查!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 2016-03-20
  • 2018-06-23
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多