LoginSignup
0
0

More than 1 year has passed since last update.

[Unity]自作アセットをUPM(verdaccio)で認証付きで管理する(簡易ver) 後編

Posted at

はじめに

こちらの記事の後編になります。

verdaccioの認証設定

verdaccioはデフォルトの設定で、webサイトにアクセスしたユーザ全員にパッケージが見えるようになっています。
今回はこれをログインしたユーザに限定し、かつUnityでupmの認証を通しつつ自作パッケージを扱えるようにする方法を
紹介します。

現状の設定

デフォルトのverdaccioは任意のクライアントから

npm adduser --registry your.domain.com

とすることで、だれでもURLさえ知っていればアカウントを追加できる状態になっています。
ログインさえできてしまえばパッケージは見放題なのであまり好ましくありません。

目指す設定

今回は以下の要件に沿うように改編します。

  • ユーザの追加を管理者以外が行えないようにする。
  • webページにアクセスしても、ログインしていない場合はパッケージを見えなくする。

アクセスを制限する

qiita/verdaccio/config/config.yamlを開きます。
packagesブロックにフォーカスします。

packages:
  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    unpublish: $authenticated
    proxy: npmjs

  '**':
    access: $all

    publish: $authenticated
    unpublish: $authenticated

上記の部分がパッケージへのアクセスの制限であり、同時にwebページの制限の設定にもなります。
細かい解説は公式にも記載されていますで今回はざっくりいきます。
今回は、知らない第三者がアクセスした際にパッケージを見えなくしたいので、packages内のaccessに許可されているユーザが$all
となっているのを、$authenticatedに変更します。
こうすると、第三者はwebページにアクセスしてもパッケージが何も登録されていない状態の画面を見ることになります。
image.png

ユーザの追加を禁止する

先ほどの設定でビュー制限をかけることが出来ましたが、ユーザとして登録が出来てしまえば見放題の状態です。
なので今度はverdaccioへのユーザ追加を禁止し、管理者がサーバ側で直接追加するようにします。

ユーザ登録を無しにする

verdaccioのconfigファイルを開きます。qiita/verdaccio/config/config.yaml
authブロックにmax_users: -1を追記します。

auth:
  htpasswd:
    file: /verdaccio/storage/htpasswd
    max_users: -1

以上の設定で、ユーザの新規追加が完全に無効になりました。

htpasswdを編集してユーザ追加

さて、先ほどの設定でユーザは追加されることはなくなりましたが、
このままでは共同作業している仲間がいる場合や、まだ自分のユーザを作成していない場合などに困ってしまいます。
なのでここからは手動でユーザを追加していきます。
以下のコマンドをqiitaディレクトリで実行します。
もしもhtpasswdの場所を変えてる場合は適宜読み替えてください。今までの内容に沿っている場合は以下のコマンドで大丈夫です。

vim verdaccio/config/htpasswd

このhtpasswdファイルにユーザ情報を記述することで、以降verdaccioにログインできるようになります。(要再起動)
直接記述する場合は、https://hostingcanada.org/htpasswd-generator/
上記のサイトなどでパスワードを生成してください。(←平文を直接記入すると動かないため)

ただ、ほとんどの方はターミナルで完結させたいと思うのでそちらの方法も紹介します。
vimを開いている場合は閉じて、dockerを終了してから以下のコマンドを実行します。

sudo apt install apache2-utils

これでhtpasswdコマンドが使えるようになります。
その後、qiita/verdaccio/storage/まで移動してから以下を実行することで
ユーザを登録することができます。細かいオプションの解説がこちらがおすすめ。
htpasswd -b -c htpasswdへの相対パスor絶対パス ユーザ名
今回は以下のように記述します

htpasswd -b -c htpasswd qiita-user

その後、パスワードが聞かれるのでそれも完了したら、dockerを再度立ち上げましょう。

docker compose up --build -d

webサイトでログインできることを確認しましょう!!!

Unityで認証を通す

さて、unityではgithubやopen upm,verdaccioから、自作のパッケージをインストールすることができます。
が、あくまでもpublicアクセスが可能なもののみで、認証が必要なパッケージは一工夫する必要があります。
この作業がやや面倒くさいため、今回はおすすめのエディタ拡張を紹介します。
https://github.com/Halodi/halodi-unity-package-registry-manager
こちらのパッケージは自作パッケージの追加、認証をすべてエディタ上で完結させてくれる神ツールです。

インストール出来たら、packages->Manage scoped registriesを選択し、ウィンドウを出します。
image.png
+ボタンからverdaccioを登録していきます。
image.png
Nameなど基本的にはjsonに直接記述するやり方と一緒ですが、今までのチュートリアル通りにやった場合の一例を記載しておきます。
image.png
面倒くさくなってテキスト欄にやり方を載せてますが、大事なのはAuthentication/Credentialsの部分です。
更に下のGenerate tokenmethodnpm loginを選択し、Loginボタンを押すことで、ログイン画面がでます。
image.png
ここに、先ほどhtpasswdで追加したユーザ情報でログインすることで、以降認証を通した状態で、Unityがverdaccioからパッケージを取得できるようになります。

それぞれのパッケージの追加

認証を通した後でもmanifest.jsonから今まで通り直接インストールすることもできますし、Packages -> add packagesからエディタから直接インストールすることもできます。
image.png

おわりに

前回書いた記事はかなりの文章量になっていたため、今回前後編と分けて簡潔にできたのは良かったです。
何かあればコメントください!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0