gpt4 book ai didi

ReactJs FE 和 Django Rest 服务与 Azure AD 进行身份验证和授权

转载 作者:行者123 更新时间:2023-12-02 23:58:02 24 4
gpt4 key购买 nike

我有一个使用 Reactjs 构建的前端应用程序,使用 msal 进行身份验证连接到 Azure AD。身份验证后,用户需要单击一个按钮来调用 Django Rest API,该 API 也使用 Azure AD 进行身份验证。React FE 和 Django 连接到 Azure AD 中两个单独的应用程序注册。甚至认为 1) FE 作为已知客户端添加到 Django 的应用程序注册中 2) Django 正在公开 API 并且范围已获得同意。

当经过身份验证的 FE 使用 Bearer token 向 Django Rest 服务发送请求时,它无法验证请求,并显示“无效 token ”。

我能够分别对 FE 和 Django Rest 服务进行身份验证,但经过身份验证的 FE 无法连接到 Django Rest 服务。请分享您对还需要检查哪些内容或任何解决方案的想法。

最佳答案

请检查是否可以解决这些配置中的任何一个

  1. 检查您是否在门户和代码中的重定向 URL 中提供了 React 应用程序的 URL,以便 Azure AD 验证用户后,它将使用 ID token 返回到您的 React 应用程序。另外,启用访问 token 和 ID token 。

  2. 检查您是否已为 Web API 创建范围(在 Azure 门户 > 您的 API > Expose an API 中)。然后在客户端应用程序的 API 权限菜单选项卡上进行配置。然后将其添加到代码设置中的范围集合中。此外,添加对该 API 权限的授予管理员同意。

  3. 检查您的 Azure 广告应用的 list :以下值可能为 null 或 1,应该为 2:如果您使用的是 v2.0 端点,

    “accessTokenAcceptedVersion”:2,

如果您使用 v2.0 端点,范围应为 api://{server_client_id}/.default。

  • 在应用程序的代码setting.py 中,您需要提供网络应用委派登录的权限。 (例如:权限:'https://login.microsoftonline.com/(yourtenant id>',)
  • auth: {
    clientId: '232a1406-b27b-4667-b8c2-3a865c42b79c',
    authority: 'https://login.microsoftonline.com/e4c9ab4e-bd27-40d5-8459-230ba2a757fb',
    //
    }

  • 当我们执行 token 验证时,请在 http://jwt.io 中检查您的 jwt token 受众: token 针对 Web API。
  • azure 为 JWT token 生成的“aud”值也由 AD 应用程序 list 中的“accessTokenAcceptedVersion”属性控制。(查看颁发者或 iss 是否具有 v2 以确认为 v2 端点)如果您将访问 token 接受版本设置为 2,则客户端 ID 和受众需要相同(即不需要在受众中写入 api://)

    请注意Implicit flow是 SPA 支持的唯一流。授权代码流适用于 Web 应用程序、移动和桌面应用程序,但不适用于 SPA。请参阅此 document

    引用文献:

    1. 参见how to configure Azure AD and how to determine the settings fordjango-auth-adfs.
    2. 您可以查看this并找到您的用例场景。
    3. 检查v2-supported-account-types for authentication-flows
    4. 检查OAuth2.0 On-Behalf-Of flow

    关于ReactJs FE 和 Django Rest 服务与 Azure AD 进行身份验证和授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68922518/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com