【问题标题】:Okta Authentication DjangoOkta 身份验证 Django
【发布时间】:2015-08-28 21:07:32
【问题描述】:

我有一个 Django 应用程序,我正在尝试添加 Okta 身份验证。我目前创建了一个使用 Okta API 来验证用户身份的自定义后端:

class OKTABackend(ModelBackend):

  def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)

  def authenticate(self, username=None, password=None):
    headers = {
      'Authorization': 'SSWS {}'.format(<my OKTA API token>),
      'Accept': 'application/json',
      'Content-type': 'application/json'
    }
    authentication_payload = {
      'username': username,
      'password': password
    }
    r = requests.post(
          <my OKTA app address>,
          headers=headers,
          data=json.dumps(authentication_payload)
    )

    try:
      r.raise_for_status()
      # code that finds/creates and returns user
    except:
      return None

我有一个登录页面,其中包含一个获取用户名和密码并将信息传递到此后端进行身份验证的表单。所有这些都在起作用。但是当我访问 OKTA 站点并单击我的应用程序时,我希望它能够登录到应用程序。目前它只是重定向到我的登录页面。如何启用从 OKTA 站点登录到我的应用程序?

【问题讨论】:

    标签: python django django-authentication okta


    【解决方案1】:

    您现在不必自己实现它。只需使用开箱即用的解决方案: https://github.com/fangli/django-saml2-auth

    它可以顺利地与 okta 配合使用。

    附:我是这个插件的作者。

    【讨论】:

    • 这个库支持的Django最新版本是2.1。该项目似乎不再维护了
    【解决方案2】:

    我建议使用 Python Social Auth:http://psa.matiasaguirre.net/ 它有一个通用的 SAML 后端供您使用。 http://psa.matiasaguirre.net/docs/backends/saml.html 文档很好,扩展也很简单。在我自己的项目中,我们对其进行了扩展,以从数据库中提取 SAML IdP 信息,以便我们可以让用户自助输入该数据。

    【讨论】:

    • 伙计,链接向下:-(
    【解决方案3】:

    您需要实施 Okta 支持的单点登录技术。对于 Python,最好的方法是 SAML,因为有多个 Python SAML 库可供使用。我建议阅读 SAML 以及它是如何工作的,以便全面了解。查看here 了解更多信息。

    当您启用 SAML 应用程序时,您的应用程序将向 Okta 发送 SAML 请求以进行身份​​验证。如果您还没有 Okta 会话,系统会要求您登录。成功登录后,Okta 会向您的应用程序发送 SAML 响应以允许您登录。如果您确实有 Okta 会话,Okta 只会将 SAML 响应返回给应用程序,而不提示登录。

    Okta 中的每个应用程序也可以有自己的登录页面,这样当 SAML 请求进入 Okta 时,您仍然可以使用自己的登录页面,而不是默认的 Okta。

    【讨论】:

      猜你喜欢
      • 2022-09-29
      • 2021-01-11
      • 2020-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多