1

djangosaml2パッケージを使用して、ベースラインの Django/pysaml2 と SAML アサーションの統合を正常に実装しました。ユーザーは、認証の成功に基づいて動的に作成されます。これは素晴らしいことです! ここで、カスタム属性の短いリストをDjango 1.6 の「拡張」ユーザー モデルに挿入したいと思います。

djangosaml2 のドキュメントには、提供された Django シグナルを使用する必要があると記載されています ( https://pypi.python.org/pypi/djangosaml2#user-attributesを参照)。

...これらの場合、djangosaml2 はリッスンできる Django シグナルを提供します。そのために、次のコードをアプリに追加できます。

from djangosaml2.signals import pre_user_save

def custom_update_user(sender=user, attributes=attributes, user_modified=user_modified)
    ...
    return True  # I modified the user object

ここに私の質問があります:

  • 上記の信号コードはどこに配置すればよいですか?
  • 拡張ユーザー モデルが次のようになっている場合、拡張ユーザー モデルに従業員 ID を設定するように指示するにはどうすればよいですか?

models.py

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    employee_id = models.CharField(blank=True,max_length=150)
4

1 に答える 1

0

シグナル アプローチに代わる方法は、このプル リクエストsettings.py定義でコードを使用することです。

SAML_PROFILE_MODULE = 'app.UserProfile'

SAML_ATTRIBUTE_MAPPING = {
    'samlAttributeThatDefinesID': ('employee_id',),
}

の値は、キーとして指定された saml 属性を入力するモデルまたはモデルSAML_ATTRIBUTE_MAPPINGのフィールド名のタプルである必要があります。app.UserProfileauth.User

免責事項: この PR はまだ公開されておらず、アップストリーム リポジトリに到達するかどうかが問題です。

于 2014-02-22T10:42:53.793 に答える