2016-08-09 5 views
0

現在、.NETでOwen with Kentorを使用してSAML認証を実装しています。私たちは正しくトークンを読んでおり、私はクレームをすべて受け取っています。しかし、私がOwinが返すUser.Identityオブジェクトを解析すると、その上に名前はありません(私がAzure Active Directoryなどを使用していれば、私は持っているでしょう)。誰かがトークンからの返品クレームのいくつかを使用してUser.Identity.Nameを設定する方法を知っていますか?この場合、問題のクレームはEmpFirstNameとEmpLastNameです。Kentor SAML認証では、User.Identity.Nameをカスタマイズする方法はありますか?

答えて

0

これには2通りの方法があります。

  1. は、特許請求の範囲の作成時に、コールバック機構である(GitHubのレポにKentor AuthServicesのドキュメントを参照)ClaimsAuthenticationManagerを実装します。また、使いやすいことが分かった場合はAcsCommandResultCreated通知を使用することもできます。そこに、必要な名前クレームを追加します(たとえば、名義の既存の姓名を組み合わせて)。
  2. Identity.Nameが既存のクレームを指し示すようにするには、ID番号のNameClaimTypeプロパティを変更します。
+0

ご返信ありがとうございます。質問では、設定とは違ってコードを使ってこれをやっているので、次のコードを使用しているように見えます。 spOptions.SystemIdentityModelIdentityConfiguration.ClaimsAuthenticationManager.LoadCustomConfiguration()ここで、XMLを渡して理解できるようにする必要があります。 EmpFirstNameとEmpLastNameを既存のクレームからIdentity.Nameプロパティに連結するために渡す必要があるXMLの例は何でしょうか? –

1

ただ、アンダースが提供している2(良い)の回答に第三の選択肢を追加するために:私はこれを行うために必要な場合には

私は、ユーザー名になりたかった主張を設置し、使用して新しいクレームを作成:

subject.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",claim.Value)); 

アイデンティティがそれを認識します。

+0

私はそのものと遊んで、何が現れてくるのか見てみましょう。ありがとうございました。 –

+0

問題ありません。それを置くのが良い場所があるかもしれませんが、私はProcessAuthenticationStatementに行きましたが、クレームがアイデンティティにどのような段階で処理されているのかわからず、あらかじめ入っていることを確認したかったのです。 – David

+0

これは私にとって完璧に機能しました。 – dmitreyg

関連する問題