皆さんこんにちは。1年のうち200日くらい眠いと言っているid:k-furusawa--gです。
記事を始める前に一つ愚痴を書かせていただきます。
皆さん、OCIを使っていてIdentity Service Id(以下、IDCS GUID)が必要になった場面はありませんか? アカウントIDはどうでしょう? この二つはサポートリクエストを書く際やClassic系のREST APIを打つ際に必要になります。
しかしこれらを入力しろと言われて、ぱっと取り出してこられる人は少ないのじゃないでしょうか? 原因は確認するための専用画面が存在しないためです。その煩わしさに関しては過去記事を読んでいただければわかると思います。
複雑というかURIから取り出してくるという手順がすでにあり得ませんね! いちいちそこまで移動するのも面倒くさい、ならローカルに保持しておこうとファイルに書いておくのも手ですが、社内ルールによってはそういったものをローカルに保存してはいけない場合もありますね。
ないなら作ってしまえということで、簡単にOCIアカウントに関する情報を取得できるアプリを作成することにしました。ちなみに公式のIDCS SDKは利用しません。APIシークレットキーを登録する作業を発生させるとそれだけでアプリ利用に必須となる知識のハードルが上がるためです(誰も使ってくれなくなる)。
本記事の目次
取得用のアプリを作成する
いきなりですが画面から。ブログで紹介しやすいように画面を付けただけですので、細かいツッコミはご遠慮ください。
入力項目は最小限にしました。
OCIに入る時と同じでアカウント名を入力し、ログインする際に使うユーザー名とパスワードを入れます。
入力を終えたら Submit! するとIDCS GUIDとアカウントIDを取得してきてくれます!
取得した値はクリップボードにコピーもできます。
これでいちいちOCIにログインしてダッシュボードへ移動しなくても二つの値が分かるようになりました。ローカルに保持するわけでもないので厳しい社内ルールにも耐えられます。
何をしているのか
本アプリでやっていることは割と単純で、OCIコンソールにログインする際に行われている認証と同じことをしています。OCIに入る前に、必ずクラウドアカウント名(クラウドアカウントIDじゃない)を入力しますね。
こんな感じの画面です。OCIは入り口が2つありますのでデザインが違う画面もありますが、どちらを通ってもクラウドアカウント入力は必須になります。
クラウドアカウント入力が済むと、IDCSの認証画面に進みます。その時のURLにすでにIDCS GUIDが含まれていますね。本アプリではそこを抜き出して表示しています。
IDCS GUIDが分かれば、IDCSユーザのIDとパスワードがあればアカウントIDがMyServiceAPIでわかるので、それをドキュメントどおりに呼び出しています。
あとはレスポンスに含まれている内容を画面に出すだけです。MyServiceAPIを使っているので、さらにここから細かな情報をとることができますね。今回はやりませんがいつかご紹介したいです。
付録:確認用画面は本当に存在しないのか
とはいえ本当に公式の画面に存在しないのかは公式に確認してみなければわかりません。アプリを作成する前にいろいろ調査してみました。
ドキュメントを確認する
まずドキュメントを見てみます。IDCS GUIDを必要とする部分のドキュメントとなるとフェデレーションあたりがあり得ますね。見てみましょう。
書いてありますね! URLから取り出せだそうです。なんと公式からしてそういう説明でした。
サポートリクエストで聞いてみる
しかしドキュメント制作が間に合っていないだけかもしれません。ここは念を入れましょう。サポートリクエストで公式のエンジニアに直接聞いてみることにしました。
Q.IDCS を画面から取得する方法はありますか?(略)
A.ダッシュボードの「サービス詳細」から取得するか、IDCSダッシュボードまで行きURLから取得してください。(略)
Q.AccountIDを画面から取得できますか?(略)
A.ダッシュボードの「サービス詳細」から取得するか、ダッシュボードのURLから取得してください。(略)
こちらの把握している通りの回答が返ってきました。やっぱりないそうです。
結論としては、この二つを入手するにはダッシュボードの「サービス詳細」まで行くのが一番の近道ということです。
おしまいに
物は試してやってみるもので、意外とあっさりIDCS GUIDが取得できました。
とにかくOracleCloudはOCIとClassic、IDCSと画面が複数ある上に設定が分離しているので複雑極まりないです。画面をまとめるか、情報取得を容易にするこういったツール類を出してほしいところですね。