4

Okta 認証を追加しようとしている Django アプリがあります。現在、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 サイトからアプリへのサインオンを有効にするにはどうすればよいですか?

4

3 に答える 3

11

今すぐ自分で実装する必要はありません。すぐに使えるソリューションを使用してください: https://github.com/fangli/django-saml2-auth

oktaでスムーズに動作します。

PS 私はこのプラグインの作成者です。

于 2016-04-12T09:14:10.830 に答える
1

Python Social Auth の使用をお勧めします: http://psa.matiasaguirre.net/ これには、使用できる汎用 SAML バックエンドがあります。 http://psa.matiasaguirre.net/docs/backends/saml.html ドキュメンテーションはかなり良く、それを拡張することもかなり簡単です。私自身のプロジェクトでは、データベースから SAML IdP 情報を取得するように拡張し、ユーザーがそのデータをセルフサービスで入力できるようにしました。

于 2015-11-19T20:33:11.253 に答える
0

Okta がサポートするシングル サインオン テクノロジを実装する必要があります。Python の場合、複数の Python SAML ライブラリを使用できるため、SAML が最適な方法です。完全に理解するために、SAML とその仕組みについて読むことをお勧めします。詳しくはこちらをご覧ください。

アプリケーションで SAML を有効にすると、アプリケーションは認証のために SAML リクエストを Okta に送信します。Okta セッションをまだ持っていない場合は、ログインするよう求められます。ログインに成功すると、Okta は SAML 応答をアプリケーションに送り返し、ログインを許可します。Okta セッションがある場合、Okta はログインを要求することなく SAML 応答をアプリケーションに返すだけです。

Okta の各アプリケーションは、独自のログイン ページを持つこともできます。これにより、SAML リクエストが Okta に着信したときに、デフォルトの Okta の代わりに独自のログイン ページを使用できます。

于 2015-09-24T16:05:42.740 に答える