JCIFSライブラリ(1.3.17)について

1,997 views
Skip to first unread message

nana.andr...@gmail.com

unread,
Jul 24, 2014, 1:55:08 AM7/24/14
to android-g...@googlegroups.com
 
androidsdkにて、NAS内のファイルを読み込みするアプリを作成しています。
SMB接続で、ユーザー・パスワードはともに無しで
下記のコードで認証すると、エラーとなりました。
 
Properties prop = new Properties();      
prop.setProperty("jcifs.smb.client.username","");
prop.setProperty("jcifs.smb.client.password","");
Config.setProperties(prop);
 
【エラー内容】
jcifs.smb.smbAuthException
logon failure: unknown username or bad password
 
無しの場合、どのようにコードを書くのか
ご存知の方がおりましたら教えていただけないでしょうか?
また、試しにユーザー・パスワードをNASに設定して、
上記内容に値を入れると認証は可能でした。
よろしくお願い致します。

Shinichi ARATA

unread,
Jul 24, 2014, 8:01:05 AM7/24/14
to android-g...@googlegroups.com
こんばんは
かっぱ大王です。

やり方は違うのですが、ユーザーID、パスワード無しでつなげることはできるようです。

以下の様なコードを書いてつなげてみました。


public class App2 {

     public static void main(String[] args) {

          try {

               // 2番目の引数がユーザーID、3番目がパスワード

               SmbShell smbShell = new SmbShell(null, "", "");


              // 接続先は環境に合わせてください。

               SmbFile smbFile = new SmbFile("smb://192.168.11.111/test/folder",

                         smbShell.getNtlmPasswordAuthentication());

               smbFile = new SmbFile("smb://192.168.11.111/test/folder/test",

                         smbShell.getNtlmPasswordAuthentication());


               smbFile.mkdir();


          } catch (IOException e) {

               e.printStackTrace();

          }

     }

}

Androidで試す前に、普通のJavaアプリでつながるかを確かめたほうが

問題の切り分けができるかもしれません。


なんとなく、共有の設定が間違っているような気もします。


参考になりましたら、幸いです。




2014年7月24日 14:55 <nana.andr...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには android-group-j...@googlegroups.com にメールを送信してください。
このグループに投稿するには android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

nana.andr...@gmail.com

unread,
Jul 24, 2014, 9:44:54 PM7/24/14
to android-g...@googlegroups.com
 
かっぱ大王 様
 
ご返信ありがとうございます。
 

こちらも試しにjavaアプリを作成して、
教えて頂いた下記のコードを張り付けると、
下記の部分でエラーが発生しました。
 
SmbShell smbShell = new SmbShell(null, "", "");
 
【エラー内容】
SmbShell を型に解決できません

上記の部分は、どのようにされておりますでしょうか?
お手数ですが、よろしくお願い致します。

 

Shinichi ARATA

unread,
Jul 25, 2014, 4:59:01 AM7/25/14
to android-g...@googlegroups.com
こんにちは
かっぱ大王です。

すみません、独自のクラスで拡張した部分が落ちてました。

SmbShellの実装は以下です。

import jcifs.smb.NtlmAuthenticator;
import jcifs.smb.NtlmPasswordAuthentication;

public class SmbShell extends NtlmAuthenticator {
private String domain;
private String username;
private String password;

protected NtlmPasswordAuthentication getNtlmPasswordAuthentication() {
try {
return new NtlmPasswordAuthentication(domain, username, password);
} catch (Exception e) {
}
return null;
}

public SmbShell(String domain, String username, String password) {
this.domain = domain;
this.username = username;
this.password = password;
NtlmAuthenticator.setDefault(this);
}
}

いずれにしても、対象のNASにWindowsやAndroidからユーザーID、パスワード
なしで接続できることを確認して、問題を切り分けることが大事かと思います。

以上、参考になりましたら、幸いです。



2014年7月25日 10:44 <nana.andr...@gmail.com>:

--

nana.andr...@gmail.com

unread,
Jul 25, 2014, 6:09:21 AM7/25/14
to android-g...@googlegroups.com


かっぱ大王 様

ご返信ありがとうございます。

 
早速、下記のコードで対応させて頂きます。

また、ご指摘頂きました問題の切り分けについても
今後javaアプリを作成しながら検証していく所存です。

 
こちらの投稿は初めて利用させていただきましたが
良いアドバイス、ご指摘頂き感謝しております。
 
また何かご縁がありましたら、ご助言よろしくお願い致します。
お忙しい中、本当にありがとうございました。
 
Reply all
Reply to author
Forward
0 new messages