0

私はAndroidアプリを持っています。これは、約10人が使用することを目的としています。つまり、公開されず、「社内」にあります。アプリは、jschを使用してユーザーをSSHサーバーに接続します。ユーザーのログオン方法を決定するときに問題が発生しました。アプリはサーバーにログオンしたときにユーザーの機能を厳しく制限しますが(基本的に特定のファイルのアップロードのみを許可します)、ユーザーはユーザーパスワードを使用してログオンする必要があります(全員が同じユーザーアカウントを使用します)。このようにパスワードを教えてあげるのはいい考えではないと思うので、ログインパスワードを知らなくてもユーザーがアプリを使えるようにする方法を考えています。これまでの私の考え。

(1)sshキーを生成し、各Androidデバイスに配置します。(これを行う方法はまだわかりませんが、可能かどうかはわかりません)。

(2)パスワードを暗号化して電話に保存し、ユーザーがアプリにログインするための「アプリパスワード」を作成します。

最善の行動方針についてアドバイスをお願いします。

4

2 に答える 2

0

ユーザー数が10人しかない社内アプリなので、ログイン時に電話のIMEI値を送信してみませんか。次に、許可されたIMEI番号を使用してサーバー上に小さなテーブル/ファイルを作成できます。これにより、ワイヤレスルーターのMACアドレスフィルタリングに少し似たものになります。

于 2011-12-03T15:21:44.930 に答える
0

まず、サーバー側でユーザーアカウントが実行できることを制限できます。これを実行します。(いくつかのヒントについては、以下を参照してください。)

次に、公開鍵認証方式を使用します。ユーザーごとに(異なる)秘密鍵を生成し、それを自分の電話に保存します(Android電話にはある種のファイルシステムがありますね)。パスワードで暗号化されている可能性があります(悪意のある電話泥棒は鍵を使用できません)。 )。

(いくつかの組み込みの暗号鍵保持デバイスがあるかもしれません-もしそうなら、あなたは確かにこれを使うことができます。しかし私はここで助けるのに十分なAndroidについて知りません。)

サーバーがOpenSSHsshd~/.ssh/authorized_keysを使用していると仮定すると、このユーザーのホームディレクトリに、各電話の秘密鍵の公開鍵を含むファイルを置くことができます。これらのキーラインには、コマンドを強制する(sftp / scpのみを許可する)か、すべての種類の転送を無効にするために使用できるオプションを含めることができます。sshdのsshd_configには、さらに多くのオプションがあります。メインのアップロードを使用する代わりに、これらのアップロード用にjailされた環境で別のsshdを開始することをお勧めします。

JSchから、 JSchオブジェクトのaddIdentityメソッドの1つを使用して、公開鍵認証を有効にできます。(免責事項:JSchのドキュメントは私が作成したものです。)

また、中間者攻撃を防ぐために、サーバーの公開鍵をアプリケーションと一緒に配信する必要があります(接続のチェックを無効にしないでください)。このsetKnownHostsメソッドを使用して、既知のホストキーのリストをJSchに提供できます。

于 2011-12-04T17:06:13.117 に答える