認証
mtb auth login # ユーザー名とパスワードを聞かれる
mtb auth status # 接続先と有効期限の確認
mtb auth logoutパスワードは「Webサービスパスワード」です
ここを取り違えると 401 になります
mtb が入力を求めるのは MT のWebサービスパスワードで、管理画面にサインインする ためのパスワードとは別物です。MT のユーザー設定画面にあり、 既定では未設定のことがあります。
mtb auth login が失敗する原因の大半はこの取り違えです。
Webサービスパスワードは MT が自動生成するもので、Data API からは設定も 取得もできません。管理画面の「ユーザー情報の編集」の右側にある「Webサービスパスワード」を 開き、発行して、表示された値を控えてください。
MT 9 では、発行したときにしか表示されません(ハッシュで保存されるため、あとから 確認する手段がありません)。値が分からなくなったら、同じ画面で[パスワードを削除]してから 発行し直します。
保存されるもの
保存されるのはセッションIDとアクセストークンだけで、パスワードは 保存しません。アクセストークンは1時間ほどで期限が切れますが、mtb がセッションIDから 自動で取得し直すので、mtb auth refresh を明示的に実行する必要はありません。
| ファイル | 中身 |
|---|---|
~/.config/mtb/config.json | プロファイル(接続先・既定サイトID) |
~/.config/mtb/credentials.json(0600) | セッションIDとアクセストークン |
MTB_CONFIG_DIR で保存先を変更できます。
対話できない場所から(CI・自動実行)
# パスワードをパイプで渡す(どこにも残りません)
pass show mt/prod | mtb auth login --username alice --password-stdin
# あるいは環境変数で
MTB_PASSWORD=... mtb auth login --username alice
# あるいは設定ファイルを一切使わずに
MTB_BASE_URL=... MTB_ACCESS_TOKEN=... mtb sites entries list --site-id 1パスワードの渡し方は3つあり、パスワードが残る場所がそれぞれ異なります。
| 残るところ | |
|---|---|
--password-stdin | どこにも残りません |
MTB_PASSWORD | 同じホストの他のプロセスから見えます |
--password | プロセス一覧に残ります。他に手段が無いときに限って使います |
--password-stdin は末尾の改行だけを取り除くので、echo pw | がそのまま使えます。 標準入力が空ならエラーで終了します。 MTB_PASSWORD に切り替わって、別のパスワードで サインインできてしまうほうが危険だからです。
MTB_ACCESS_TOKEN だけで実行するときは、失効しても自動更新できません (セッションIDが無いため)。長時間実行するなら --password-stdin を使ってください。
API で作ったユーザーがサインインできないとき
新しく作ったユーザーはそのままでは Data API にサインインできません。 次の3つがすべて必要です。
sign_in_data_apiシステム権限:認証エンドポイントがこの権限を明示的に確認しますbashmtb users update <id> --user '{"systemPermissions":["sign_in_data_api"]}'- Webサービスパスワード:管理画面で発行する(API からは設定も取得もできません)
- サイト側で Data API が許可されていること:サイト設定 → ウェブサービス
どれが欠けても 401 Invalid login になり、どれが欠けているかは区別できません。 上から順に確認してください。
記事の著者は、サインインしている人になります
entry に作成者を指定する項目はありません。author は読み取り専用で、 書き換えても 200 が返るだけで、変更は反映されません。
別の人の名前で投稿したいなら、その人のプロファイルでサインインしてください。
mtb profile add mt-editor --base-url http://example.com/cgi-bin/mt/mt-data-api.cgi
mtb auth login --profile mt-editor --username editor
mtb sites entries create --profile mt-editor --site-id 2 --entry @entry.jsonつまずいたら
| 症状 | 原因 | 対処 |
|---|---|---|
401 Invalid login | サインインパスワードを使っている | Webサービスパスワードを確認する |
| 401 が実行のたびに出る | セッションが切れている | mtb auth login をやり直す |
| 403 | ユーザーの権限不足 | MT の管理画面でロールを確認する(リトライしても直りません) |
| 404(パスは合っている) | ベースURLが mt-data-api.cgi まで届いていない | mtb profile show |
| JSON でなく HTML が返る | ベースURLが管理画面を指している | 同上 |
一覧はうまくいかないときにあります。