2011-12-09 34 views
0

Shibboleth認証を使用してアプリをフロントエンドしています。認証されたユーザー名をアプリに表示するには、どうすればそのユーザー名を取得できますか?Shibboleth認証ユーザー名を取得することが可能

ありがとうございました。

+0

は、あなたのWebアプリケーションのためにどのような言語を使用している、とあなたは何のWebサーバを使用していますか?答えはそれらに依存します。 – jbindel

答えて

0

eduPersonオブジェクトクラス仕様(200806)

2.2.8。 eduPersonPrincipalName(eduPerson 1.0で定義); OID:1.3.6.1.4.1.5923.1.1.1.6


RFC 4512の定義 (1.3.6.1.4.1.5923.1.1.1.6

 NAME 'eduPersonPrincipalName' 

     DESC 'eduPerson per Internet2 and EDUCAUSE' 

     EQUALITY caseIgnoreMatch 

     SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' SINGLE-VALUE) 

アプリケーションユーティリティクラス:標準;#値の単一

、制度間の認証の目的のために、人の「NETID」それは「ユーザー@スコープ」形式で表現されなければならない範囲defin定義。ローカルセキュリティドメイン。複数の「@」記号は推奨されませんが、いずれの場合も、左から始まる「@」記号の最初の出現は、構成要素間の区切り文字とみなされます。したがって、ユーザ識別子は最初の "@"の右側のセキュリティドメインです。この構文解析ルールは、正規表現処理におけるPOSIXの "greedy"曖昧さ回避方法に準拠しています。スコープが登録されたドメイン名である場合、対応する登録者組織がスコープとみなされる。例えば、[email protected]は、ドメイン名 "trinity.edu"で登録された高等教育機関にePPNの背後にあるアイデンティティに "NetID" "フランシス"があることを意味します。他のバリュー・スタイルが使用されている場合、それらのセマンティクスは関連するパーティーによってプロファイリングされなければなりません。スコープの各値は、割り当てられたプリンシパル名が一意である名前空間を定義します。このルールが与えられた場合、eduPersonPrincipalName値のペアは衝突しません。それらが同じ場合、同じ管理ドメイン内の同じプリンシパルを参照します。

ノート

埋めた場合、ユーザーはローカルで操作するサービスを使用して、この識別子を使用して認証することができるはずです。ローカル認証システムは、認証されたプリンシパルがこの識別子が発行された人物であることを(ローカルアプリケーションとリモートアプリケーションの両方に対して)適切に肯定することができなければなりません。

最初の目的は、Shibbolethプロジェクト内でこの属性を使用することです(http://shibboleth.internet2.edu/)。しかしながら、他のいくつかのアプリケーションがこの属性(例えば、H.323ビデオ、チャットソフトウェアなど)をうまく利用できることが急速に明らかになっている。 eduPersonPrincipalName(EPPN)は次のように使用されます。リソース所有者Aは、BのEPPNを検出するためにBのディレクトリエントリを調べます。 Aは、BのEPPNがリソースを使用することが許可されていることをローカル認可システムに通知します。 Bがリソースにアクセスしようとすると、アプリケーション(またはアクセス制御インフラストラクチャ)はBのIDを検証し、Bが適切なアクセス権限を与えられていることをローカル認可システムに確認し、アクセスを許可または拒否します。

EPPNはKerberos識別子(principal @ realm)のように見えます。サイトは、KerberosプリンシパルとしてEPPNをローカルに実装することを選択する可能性があります。ただし、これは必須条件ではありません。サイトは、ローカルで受け入れ可能な方法で認証を行うことを選択できます。

同様に、EPPNをユーザーの公開電子メールアドレスと混同しないでください。ただし、2つの値が同じでもかまいません。サイトによっては、電子メールアドレスとセキュリティプリンシパルのユーザー部分を同じ文字列にすることを選択したサイトもあります。他のサイトはこれをしないことを選択しました。同じであるように見えても、異なるサブシステムや異なる目的で使用され、同じままにする必要はありません。

ローカルホワイトページディレクトリ内のユーザーのオブジェクトのuid属性には、ログインID、セキュリティプリンシパルも含まれます。いくつかのシステム(NDSなど)では、cn属性にログインIDを入れることができます。これらの属性は、普遍的なオブジェクトクラス内で定義されます。残念なことに、それらの使用は、クロスドメイン認可で使用するために十分に正確で一貫した方法で規定されていません。さまざまなシステムが既にこれらの属性の矛盾した使用をしています。したがって、この新しい属性を定義しました。

EPPNは、univ.eduのunivによってエンタープライズベースで管理されるという前提があります。特定のEPPNは、関連ユーザにのみ割り当てられます。複数の人が共有するセキュリティプリンシパル識別子ではありません。最後に、各EPPNはローカルセキュリティドメイン内で一意です。

以前に割り当てられたEPPNが異種の個人に再割り当てされるまでの期間は、制度的な決定です。一部の機関は、EPPNを再割り当てしないことを選択します。他の人は、再割り当ての前に比較的短い中断を選ぶかもしれない。これは依拠当事者の作業を複雑にしているが、制度的自律性を前提としていることは避けられない。これらの問題の詳細については、識別子に関するMACEベストプラクティスのドキュメントを参照してください。

この属性は、現在配備されているテクノロジと、現在LDAPを使用していないコードまたはPKIが必要なコードに基づいているアプリケーションの作成に役立ちます。この属性は、異なるテクノロジを使用するサイト間の興味深い組織間コラボレーションを促進するためのフレームワークを作成するのに役立ちます。要するに、この属性は、さらに別の抽象化レイヤの基礎を提供します。 hputter @ hsww:

例のアプリケーションでは、この属性は、リソース

例(LDIF断片) eduPersonPrincipalName

に便利 アクセス制御になります。wiz

構文:directoryString;インデックス:PRES、EQ、サブ


参考文献: http://middleware.internet2.edu/eduperson/docs/internet2-mace-dir-eduperson-200806.html#eduPersonPrincipalName

+0

参照リンクが古くなっています – danludwig

1

あなたはその属性を公開する必要があります。通常は、ローカルSPからの要求にヘッダとして追加されます。少なくとも、それはISAPI拡張機能を持つIIS上で動作する方法です。

1

access the Attributesは、アプリケーションの言語と環境に固有の方法で使用できます。優先メソッドは環境変数を使用することですが、HTTP要求ヘッダーを使用することもできます。クライアントは何らかのヘッダーを「偽造」する可能性があるため、セキュリティ上の問題があります(ただし、nginxなどのHTTPフロントエンドでは、それらは、Shibboleth Native SPが通常使用するものです)。

あなたはTomcat上でのJavaを使用している場合、たとえば、あなたがmod_shib2での作業のApache HTTP上mod_proxy_ajpを持っているでしょう、とmod_proxy_ajpコードは、これらを置くように、あなたは、ヘッダー/変数に「AJP_」を付加するSPを構成しますヘッダーの代わりに属性として要求で。

とにかくユーザー名(おそらくプリンシパル/サブジェクト)がアプリケーションに渡されていることがわかったら、上記のリンクに記載されているように、プログラミング言語の一般的な属性アクセスメソッドを使用してアクセスできます。

関連する問題