【发布时间】:2020-03-23 08:40:14
【问题描述】:
我有一个使用 Devexpress Javascript 控件的 ASP.Net Core Web 应用程序。
我有一个 [已授权] 的 .Net Core API 项目。 ASP.Net Core Web 应用程序通过授权类型 ClientCredentials 访问 API 项目,传入客户端 ID 和客户端密码以进行身份验证。此流程运行良好。
我的问题是 javascript 控件(无 UI 级别身份验证)需要访问 API,并且我不能使用 ClientCredentials 授权类型,因为客户端密码将在 javascript 中可见。
使用什么授权类型?或如何确保 javascript 客户端通过身份验证安全地访问 API?
更新 1: 我正在寻找的是没有 UI 级别身份验证(没有登录屏幕)的 Jasavscript 客户端如何安全地访问私有 API?
【问题讨论】:
-
no UI level authentication是什么意思?您的 javascript 应用程序可以在浏览器中运行,对吗? -
UI 级别的身份验证(用户 ID 和密码)由 ASP.Net Coew Web 应用程序完成 - 全部是 C#,使用的授权类型是混合。 javascript 客户端独立于 ASP.Net Core Web 应用程序。
-
取决于您是否有单页应用程序。通常您对单页应用程序使用隐式授权类型。这里有一个新的建议:auth0.com/blog/oauth2-implicit-grant-and-spa 但我认为你还不需要担心 IMO。如果不是 SPA,那么就像 Ganu 提到的那样混合流——
-
我认为这个问题具有误导性。您有一个带有 javascript 功能的 ASP.Net Core Web 应用程序 (mvc?)。 没有 UI 级别的身份验证,怎么会有一个单独的 javascript 客户端呢?如果 javascript 不在 iframe 中运行,它是客户端的一部分,应该能够请求现有的访问令牌。您确定您使用客户端凭据来访问 api 吗?由于您也可以使用用户登录后收到的访问令牌,包括刷新令牌逻辑。
标签: javascript asp.net-core identityserver4