如何在Azure中实施授权代码授予

时间:2020-07-11 14:15:23

标签: reactjs authentication oauth-2.0 azure-active-directory

我试图了解如何在Azure中实现授权代码授予。我不确定我的理解是否是对它的正确实现,但是可以理解。我在Azure中有2个应用程序服务(其中1个用于API,另外1个用于将我的Reactjs应用程序保存在具有用户界面的位置)。为了保护我的Api,我计划实施授权代码授予。

根据我的理解,流程如下:

  1. 在我的SPA中,我需要首先检查用户是否已通过身份验证,否则,我需要将用户重定向到:

    https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize? client_id = 6731de76-14a6-49ae-97bc-6eba6914391e &response_type =代码 &redirect_uri = http%3A%2F%2Flocalhost%2Fmyapp%2F &response_mode =查询 &scope = openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fmail.read &state = 12345

  2. 获得用户授权后,应返回授权码

  3. (这部分让我有些困惑)。由于我只是在使用Javascript(ReactJS),所以我认为在代码中存储客户机密并不安全。所以我想将自动代码传递给我的API,并在我的API内与令牌端点联系

    //换行符仅供阅读

    POST /{tenant}/oauth2/v2.0/token HTTP / 1.1 主持人:https://login.microsoftonline.com 内容类型:application / x-www-form-urlencoded

    client_id = 6731de76-14a6-49ae-97bc-6eba6914391e &scope = https%3A%2F%2Fgraph.microsoft.com%2Fmail.read &code = OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr ... &redirect_uri = http%3A%2F%2Flocalhost%2Fmyapp%2F &grant_type = authorization_code &client_secret = JqQX2PNo9bpM0uEihUPzyrh

  4. 下一步应该做什么?自从获得访问令牌以来,这是否意味着我现在可以提供数据了?

我读了一篇文章,“隐式授权流程”是针对SPA的,但它已经过时,不再安全。根据我的情况,我不确定应该使用“授权代码授予”还是“隐式授予流”。

1 个答案:

答案 0 :(得分:0)

建议如下:

  • 在您的SPA中使用授权码流(PKCE)
  • 使用安全性库为您完成SPA安全性工作

在这种情况下,将生成运行时机密,并且没有客户端机密。也许我的这些资源会为您填补一些空白: