2

liferayユーザーデータベースを使用する別のWebアプリがあります。ただし、ユーザーがこのWebサイトにアクセスする前に、まず認証を受ける必要があります。この機能を実現するにはどうすればよいですか。電子メール/パスワードを使用して認証のためにWSAPIを検索しようとしましたが、見つかりませんでした。

また、ユーザーは引き続きliferayポータルにログインできる必要があります。また、ログインは別のliferayWebサービスのようにする必要があります。

ヒントはありますか?

うーん、私はデータベースにアクセスできるので、おそらく1つの方法は、クライアントから提供されたパスワードをハッシュすることですか?データベースに保存されている値に対して検証します。

PwdEncryptorクラスがパスワードの暗号化を担当していることがわかりましたが、残念ながら、liferayとの依存関係が多すぎて、パスワードを引き出すことができません:-?

ありがとう

4

2 に答える 2

3

それは最善のアプローチではないかもしれませんが、この解決策はあなたが探しているものかもしれません。ユーザーの会社ID、メールアドレス、パスワードが必要です。私の場合、liferayのデフォルトの会社IDがあります。

電子メール/パスワードを認証するために、私の場合は他のliferay Webサービス(get-user-id-by-email-address)を呼び出すことができます。次に、HTTPBasicを介してユーザーを認証します。ジャージレストWebサービスを使用してliferayWebサービスを呼び出す場合、次のようにコーディングできます。

String url += String.format("user/get-user-id-by-email-address?companyId=%s&emailAddress=%s",
                properties.getProperty("default.company.id"), email);

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
client.addFilter(new HTTPBasicAuthFilter(email, password));
WebResource service = client.resource(url);
ClientResponse response = service.accept("application/json").post(ClientResponse.class);

if (response.getClientResponseStatus() == com.sun.jersey.api.client.ClientResponse.Status.OK) {
 //valid user
} else {
  //invalid user
}
于 2012-06-20T06:20:52.130 に答える
1

CASまたはOpenSSOを使用するようにLiferayを構成することにより、サイトにシングルサインオンソリューションを実装できます。さまざまなソースがあります:OpenSSO-LiferayCAS-Liferay

于 2012-06-13T13:32:44.640 に答える