【发布时间】:2021-10-23 09:21:01
【问题描述】:
我们的客户希望我们实施受信任的子系统设计,这意味着他们拥有 Azure AD(客户端 AD)来授权用户使用前端。并要求我们使用自己的Azure AD(Dev AD)来授权前端到后端。我们管理来自客户端 AD 的授权流程(使用 angular-msal 库)并且没有问题。我们得到一个访问令牌并授权进入前端。但随后我需要使用 client_secret、application_id 从 (Dev AD) 请求另一个访问令牌,而无需用户交互 (client credential flow)。能够调用安全 API(我们的后端)。这就是我的后端人员建议的方式。所以在那之后,他们可以在后端验证第二个 access_token 并将安全数据提供回客户端。 我的问题是:这是使用 client_secret、application_id 从 Angular 应用程序获取访问令牌的正确且安全的方式吗?至少当我尝试时,我遇到了 CORS 问题。 一位客户还添加了以下我不明白的描述。如果它有助于理解问题:
使用 MSAL 库时,可以在请求令牌时将身份提供程序 (Azure AD) 作为参数提供
【问题讨论】:
-
永远不要向客户端添加秘密。
-
"But then I need to request another access token from (Dev AD) without user interaction (client credential flow) using client_secret, application_id. for being able to call a secure API (our back end)"这似乎没问题,在这种情况下,您可以将您的azure ad credential保留在您的backend configuration files或azure key vault这些是常见的做法。但是为什么你需要在你的前端保留apps secret呢?要实现您的后端团队的建议,不需要将您的应用程序凭证保留在 Angular 端或前端。这不应该。让我知道你的更新。 -
谢谢你们!
-
Md Farid Uddin Kiron,我会让你知道我们的更新。
标签: angular azure-active-directory frontend msal-angular