2016-10-18 9 views
1

最近、自分の環境をWSO2 IS 5.0.0からWSO2 IS 5.2.0に更新しました。私の環境は、クラスタを作成している2台のマシン(スティッキーセッションを有効にしたWKAメンバーシップスキームとロードバランサ(AWS ELB)を使用)から構成されています。私はMySQLを使用しています(デフォルトのH2データベースではありません)。 ISが導入されているマシンは、Windows Server 2012 R2(EC2 AWSマシン)です。私はまた、いわゆるWSO2 IS Adminサービスを使用しています。UserProfileMgtServiceがWSO2 IS 5.2.0でユーザーを検索できません

私はUserProfileMgtService
https://url:port/services/UserProfileMgtService?wsdl)を消費しています。
OAuth2TokenValidationServiceと組み合わせて、
https://url:port/services/OAuth2TokenValidationService?wsdl)を使用しています。

OAuth2TokenValidationServiceに有効なアクセストークンを渡すと、OAuth2TokenValidationServiceのValidateメソッドを使用して、データOAuth2TokenValidationResponseDTOオブジェクトを記入することができます。結果として、私はauthorizedUserを抽出し、UserProfileMgtServiceのgetUserProfileメソッドに渡すことができます。私は標準のcarbon.superドメインを使用しており、私はユーザー名として電子メールを使用しています。
「管理者@ admin.com @ carbon.super」PROFILENAME
としてユーザ名
「デフォルト」として、結果として、私は、次のメッセージが表示されます:
UserNotFoundを例えば私はgetUserProfileに次の2つのパラメータを渡しています:ユーザーadmin @ admin.com @ carbon.superdoesは存在しません:PRIMARY
「@ carbon.super」を権限のあるユーザーから削除すると、すべて問題なく、ユーザープロファイル情報を取得できます。 ISのマルチテナントを使用しているため、これは私にとって非常に重要です。次のユーザーがいる場合があります。
admin @ admin.com @ test.net
admin @ admin.com @ test2.net

WSO2 IS 5.0.0でこのサービスがこのように動作していないことに気付きました。アップグレード後にこの問題が発生し始めました。

これは望ましい動作ですか、IS 5.2.0のAPIが変更されたために導入されましたか?もしそうなら、 "username" + "tenant-domain"(有効なアクセストークンを渡すときに、認証されたユーザとしてOAuth2TokenValidationServiceによって取り出される)を使用してユーザプロファイルを取得する別の方法があります。
これは設定ミスのために発生している可能性がありますか?もしそうであれば、更新する必要のあるファイルとその中で正確に修正すべきファイルは何ですか?
WSO2 IS 5.2.0管理サービスの詳細情報を取得できる場所はありますか?

ありがとうございます。

答えて

1

UserProfileMgt Identity Serverのサービスは、管理サービスです。 WSO2管理サービスでは、テナントドメインは認証されたユーザーによって識別され、ユーザー名を渡すべきではありません。

ユーザー名はテナントフリーのユーザー名にする必要があります。

したがって、usernameからcarbon.super部分を削除しても問題ありません。

テナント設定では、これらのAPIにアクセスするためにテナントユーザー(Ex admin @ admin.com @ test.net)と認証する必要があります。だから、スーパーテナントのように、あなたはテナントフリーのユーザー名を使用することができますし、それは動作します。

たとえば、テナントドメインtest.netでuser:[email protected]のユーザープロファイルを取得する場合、リクエストは下の画像のようになります。

enter image description here

おかげ
Isura。

+0

返信いただきありがとうございます。私はあなたの意見を持っています(私は思う)、私はサービスのコンテキストを与えるために管理者の資格情報を使用しているし、私はユーザー名です。私がcarbon.superの管理者資格を渡すと、carbon.superテナントからプロファイルを取得します。また、私がtest.netテナントの管理者資格を渡すと、私はtest.netテナントからアイデンティティを取得します。 –

+2

はい。あなたが正しいです。特定のテナントのプロファイルを取得するには、同じテナントで認証する必要があります。 –

関連する問題