(如何)通过OpenID Connect(或不?)确保Web API的安全



是否建议使用Open ID Connect直接保护Web API?设置:

  • 移动应用程序
  • 授权服务器(ADFS 4.0)
  • Web API(ASP.NET核心)

目前我做普通的OAuth2"授权代码流",然后在HTTP头中将access_Code作为"授权:承载"传递给我的Web API。在ASP.NET核心中,我只做通常的操作服务。AddAuthentication(…)。AddJwtBearer(…)工作良好。

但每个人都说OAuth2只是"伪身份验证",存在某些缺陷。我希望我的用户在使用我的Web API之前经过正确的身份验证。因此,开放身份连接似乎应该是一种方式,也就是"真正的身份验证"。

但是,在ASP.NET Core Web API中"使用"Open ID Connect身份验证确实有效吗?如果是,怎么做?这是一种好的做法吗?所有的示例似乎都是关于网站的,而不是Web API。

有一个扩展方法服务。AddAuthentication(…).AddOpenIdConnect()

但在asp.net WEB API中实现OpenID连接Authetition,他们声明"该组件是为用户交互客户端设计的"。

我也不明白的是,我会如何处理从Open id connect获得的"id_token"。目前我只是通过"access_token"作为Bearer。如何使用id_token?

一些澄清:

  • API不代表用户行事(访问公司数据)
  • API已经有权访问"数据"。它本身不需要任何身份验证工作流,也不需要传递用户凭据
  • API需要知道用户是"世界卫生组织",必须以现代和良好的方式进行
  • 这就是为什么我想到OICD的"真实身份验证"(VS Oauth2只是"伪")

我基本上无法理解从OICD(id_token)返回的东西将如何传递到我的Web API。

OIDC是一个OAuth工作流。它只是扩展了OAuth;它不能取代它。API通常通过令牌或客户端机密进行授权。区别仅仅在于它是否代表特定用户行事。例如,像Facebook API这样的东西,其API有两个工作流,你通常使用Facebook的API作为客户端应用程序,使用你的应用程序的应用程序id和客户端机密,或者你可以做用户特定的事情,比如在用户墙上创建一个帖子,并获得授权令牌。

该授权令牌几乎总是来自OAuth工作流。考虑到您所述的设置,您的移动应用程序将处理此问题,以便从ADFS服务器为用户获取身份验证令牌。同时,您的API实际上很可能同时做这两件事。如果移动应用程序为它提供了一个客户端密钥和用户身份验证令牌,那么它将使用分配的客户端密钥和该令牌进行通信。

最新更新