#SmbFileでファイル共有認証が通らない。(Java)
最近、WindowsのSMB(共有フォルダ)のファイル操作で使ったSmbFileでハマったので、需要なさそうだけど残します。
SMB(共有フォルダ)のファイル操作を行いたいときに使おうとしたjcifsのSmbFile。
使い方としてはJava標準のFileクラスと使い方はほぼ同じです。
とはいえFileクラスをラップしてたりするわけではなく、全く関係ないので注意です。
初案件で右も左もよくわかってない初心者向け。
#パスにユーザ名、パスワードを含めるやり方
String rootPath = "smb://ユーザー名:パスワード@サーバー名/共有フォルダ名/"
SmbFile file = new SmbFile(rootPath);
これでいけると思いきや、ユーザ名またはパスワードが不正といわれる。
もしかして、Active Directoryのドメインが抜けているから認識されない?
String rootPath = "smb://ドメイン名;ユーザー名:パスワード@サーバー名/共有フォルダ名/"
SmbFile file = new SmbFile(rootPath);
ドメイン名追加したらうまくいきました。
ローカルからアクセスするんだから、ユーザ名もいらないんじゃね?とか思いましたが、ちゃんとドメイン名まで必要になる。
Active Directoryでアカウントが管理されている場合は注意しましょう。
##その他
・Windowsだと「\」バックスラッシュでパスを区切りがちですが、「/」スラッシュなので注意。
・末尾には必ず「/」が必要。
・smb://はプロトコルです。https://みたいなイメージ。
(ぼくは初めCドライブみたいなものかと思ってました。全然違います。)
・サーバー名はIPアドレスでもDNS名でも行けるらしいです。
##参考
・https://javadoc.io/static/org.codelibs/jcifs/2.1.3/jcifs/smb/SmbFile.html