新規投稿
フォローする

javascriptからのログイン再認証について

やりたいこと>>
 一覧画面にボタンを1つ追加し、そのボタンを押下するとファイルのアップロード⇒レコードの登録処理が実行される。

状況>>
 javascriptからファイルのアップロード、レコードの登録を行うためには、ユーザ認証が必要となります。(REST APIを利用する方法の場合)
これを実現する策としては以下の2つの方法を確認しています。

A:ログイン認証を用いる方法
xmlHttp.setRequestHeader("X-Cybozu-Authorization", *);
B:APIトークンを用いる方法
xmlHttp.setRequestHeader("X-Cybozu-API-Token", *
);

それぞれの問題点
A:ログイン認証を用いる方法
 kintoneのプログラムからはユーザのパスワードを取得できない(保持していない)ため、再度パスワードを入力してもある必要がある。

B:APIトークンを用いる方法
 Administrator以外のユーザでは利用できない。

この2つの方法以外に何か方策はございますでしょうか?
もし、ございましたら、ご教示くださいますようお願い申し上げます。

0

4件のコメント

Avatar
斎藤 栄

浅井様
ラジカルブリッジの斎藤です。

JSからXMLHttpRequestを用いてファイルアップロードを行いたい、ということかと思いますが、JSからやる場合は、その操作を行おうとしているログインユーザーとして認証・実行されるのが一般的かと思います(セッション認証)。
AでもBでもない方法になりますが、ファイルアップロードのようなPOSTについてはCSRFトークンの設定が必要かと思いますので、下記参考ページをご確認の上、試してみてください。(外部からREST APIを叩く場合と、JS内から叩く場合とでお作法が異なるため、ちょっとややこしいと思いますが。。)

■ファイルアップロードで必須となる3つの手順https://cybozudev.zendesk.com/hc/ja/articles/200724665

■CSRFトークンの取得
https://developers.cybozu.com/ja/kintone-api/appapi-requestjsapi.html#CSRF

■CSRFトークン利用時の注意点
https://cybozudev.zendesk.com/hc/ja/articles/201732180-CSRF%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E5%88%A9%E7%94%A8%E6%99%82%E3%81%AE%E6%B3%A8%E6%84%8F%E7%82%B9

0
Avatar
浅井 一郎

斉藤様、ご回答いただきありがとうございます。

以下のような内容で問題なく稼働することができました。

<記:一部抜粋>
 loginInfo = kintone.getRequestToken();
 <略>
 // URLを設定する
 var appUrl = kintone.api.url('/k/v1/record') + "?REQUEST_TOKEN=" + loginInfo;
 <略>
 //ログイン認証
 xmlHttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");

0
Avatar
斎藤 栄

浅井様

記載いただいたコードを見ますと、URLパラメータとしてREQUEST_TOKENを渡しているようですが、これはこの後でXMLHttpRequestによるGETリクエストを行っているのでしょうか?GETリクエストの場合は、逆にREQUEST_TOKENを渡さなくても大丈夫でして、POST、PUT、DELETEの時は渡す必要があります。

元々、ファイルのアップロードやレコードの登録を行いたいとのことでしたので、恐らくPOSTをやりたいのではないかと思うのですが、その場合はURLパラメータではなく、リクエストボディで渡す必要があるかと思いますのでご注意ください。

0
Avatar
浅井 一郎

斉藤様、ご回答いただきありがとうございます。

 DELETEについては行っていませんが、POST、PUTについては
このソースで問題なく動いていますね・・・。
もし、問題が発生したときには、リクエストボディを用いる方法を試してみます。

0
サインインしてコメントを残してください。