ログオン・ログオフ

最終更新日: 2021年9月9日
R8 | R9

ログオン

Wagbyアプリケーション内部で REST API を利用する場合

すでにログオン認証処理が終わったあと、JavaScript をカスタマイズして直接、REST API 経由で Wagby からデータを取得する場合は、ログオン処理は不要です。以降のページに記載の REST API をご利用ください。

外部のアプリケーションから Wagby アプリケーションを REST API で利用する場合

@RequestMapping(value="/rest/session", method=POST, produces="application/json")
パラメータ説明
userユーザ名
passパスワード

URL例

http://localhost:8921/wagby/rest/session

パラメータ指定方法

POSTと同様にContent-Typeをapplication/x-www-form-urlencodedとして送信します。
具体的には Content-Typeヘッダに "application/x-www-form-urlencoded" を指定し、次のような文字列を送信します。

user=admin&pass=admin

レスポンス - ログオン成功

STATUS=200 OK
CookieにJSESSIONIDを返します。以降のREST API呼び出し時には、このJSESSIONIDを付与してください。

返戻の内容例を示します。

{
 "groupId": [],
 "username": "admin",
 "passwdChangeDate": null,
 "preference": {
   "id": "admin",
   "item": []
 },
 "status":"logon.afterLogon",
 "juser": {
   "id": 101,
   "userid": "admin",
   "jgroupid": [],
   "name": "システム管理者",
   "valid": null,
   "level": 0,
   "passwdChangeDate": null,
   "passwdChangeFlag": null,
   "passwdErrCount": null,
   "lastLogonDate":1387281246638,
   "rule": []
 },
 "passwdChangeFlag": null
}

レスポンス - ログオン失敗

STATUS=401 Unauthorized
返戻の内容例を示します。

{
   "timestamp": 1524549611809,
   "status": 401,
   "error": "Unauthorized",
   "message": "Authentication Failed: Bad credentials",
   "path": "/wagby/rest/session",
   "errors": {
       "jfcerror": [
           {
               "name": null,
               "content": "ユーザ名またはパスワードが間違っています。パスワードを連続して複数回間違えるとアカウントがロックされる場合があります。ご注意ください。",
               "code": "error.password.mismatch"
           }
       ],
       "jfcinfo": [],
       "jfcdebug": [],
       "jfcwarn": []
   }
}

パスワードハッシュ化の対応

Wagbyではパスワードをハッシュ化することができます。

REST API のログオン処理は、このハッシュ化パスワードにも対応してます。パスワードは平文のまま送ってください。

ログオフ

@RequestMapping(value="/rest/session", method=DELETE, produces="application/json")

URL例

http://localhost:8921/wagby/rest/session

レスポンス

STATUS=200 OK 返戻の内容例を示します。

{
 "status":"logoff.input"
}

ログオンユーザの情報取得

@RequestMapping(value="/rest/session", method=GET, produces="application/json")

URL例

http://localhost:8921/wagby/rest/session

レスポンス - 認証時

上記「レスポンス ログオン成功時」と同じ。

レスポンス - 未認証時

STATUS=401 Unauthorized
内容は空です。

{}

自動ログオン

一回の REST API 呼び出し時にログオンし、REST API 処理終了後にログオフする運用を行うことができます。この場合はセッションを維持する必要はありません。(上で説明したような、CookieにJSESSIONIDを保持することは不要です。)

REST API 呼び出し時に、リクエストヘッダに "X-Wagby-Authorization" をセットします。値は、ユーザーIDとパスワードをコロンで区切ったものを BASE64 で符号化したものを指定します。

例えば "admin:admin" を BASE64 で符号化すると "YWRtaW46YWRtaW4=" となります。
"admin:wagby" を BASE64 で符号化すると "YWRtaW46d2FnYnk=" となります。

BASE64 で符号化(エンコード)する方法は割愛します。インターネット上に、さまざまなサービスが公開されています。

参考資料

セキュリティ

この方法はWagbyへHTTPリクエストを送るタイミングで、ヘッダにログオンIDとパスワードを付与しています。実際の運用では、HTTP暗号化通信 (HTTPS) を使うようにしてください。[詳細...]

トラブルシューティング

REST APIにてログオン中にX-Wagby-Authenticationヘッダでログオンしようとした場合の挙動

X-Wagby-Authenticationヘッダに指定したログオンIDは無視されます。すでにログオン済みのアカウントで操作されます。例を示します。

  1. POST /wagby/rest/session を使い、user1 でログオンする。
  2. GET /wagby/rest/jnews/list を呼び出す。このとき X-Wagby-Authorization で user2 でログオンする、と指定する。X-Wagby-Authorizationの指定は無視され、すでにログオン済みのアカウント user1 で実行される。
  3. DELETE /wagby/rest/sessionでログオフする。user1 がログオフされる。

REST API処理時にログオン中の他のユーザーが強制的にログアウトされ、ログオン画面に戻される

次の点をご確認ください。

変更履歴

  • /rest/session でログオンする場合の method は POST です。PUT ではないのでご注意ください。
  • /rest/session でログオンする方法は R8.0.3 以降の Wagby で利用できます。