質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

4669閲覧

ログイン済みの webview からログイン状態を保持して外部ブラウザを起動したい

pectin

総合スコア95

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2021/12/07 03:05

編集2021/12/07 04:35

実現したいこと

webview でログイン済みの状態から、同ページを外部ブラウザで起動した時にログイン状態を保持した状態にしたい。

webview でログイン済みの状態で、外部ブラウザを起動するようなアプリを見ると、ログイン状態を保持した状態で外部ブラウザが起動されます。

このようなことをしたい場合、一般的な手法を知りたいです。

私が考えた方法は、
・外部ブラウザ起動前に、ログイン状態を引き継げるトークンのようなものをサーバと通信して取得する
・外部ブラウザ起動時に取得したトークンをクエリストリングに付与して開く
・サーバ側でそのクエリストリングのトークン値をサーバ側で保持しているセッション情報と照会
・照会できれば、ログイン済みの情報がセットされたセッション変数を作成し、cookie に保存してもらえるようにセッション ID を振り出す
です。

あとは、以下のことを考えています。
外部ブラウザ起動時の URL は、トークン受付用の URL で、トークンの照合処理完了後に指定 URL(本来開きたかった URL)にリダイレクトさせようと考えています。
トークン払い出し時は、PHP のセッション ID のようにトークンとそのユーザが紐づくようにします。
セキュリティとしては、払い出すトークンは 1 分とか短いもので、照会完了後に削除することで短い寿命で 1 度限りしか使用できないように考えています。
セッション ID の払い出しは、その web ページのログイン処理結果を返すものと同様にすることで、トークンでログインが完了する仕組みという感じを考えています。

一般的な手法が同様なものなのか、全く違うものなのかを知りたいです。
違う場合は、その手法を知りたいです。


「ログイン済み」の状態は、ID とパスワードをユーザが送信して認証を受けることを指しています
PHP で例えると、ID とパスワードからユーザ DB のレコードが照会できればログインを許可しセッション ID を払い出す、よくある認証方式なイメージです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/12/07 03:22

質問者さんの言う「ログイン済みの状態」とはどういうことですか? Web アプリの何らかの認証システムで、id と password をユーザーが送信して認証を受けるということ? であれば、認証システムは何かのフレームワークを使う? それは何?
pectin

2021/12/07 04:35

質問ありがとうございます 「ログイン済み」の状態は、ID とパスワードをユーザが送信して認証を受けることを指しています PHP で例えると、ID とパスワードからユーザ DB のレコードが照会できればログインを許可しセッション ID を払い出す、よくある認証方式なイメージです。
退会済みユーザー

退会済みユーザー

2021/12/07 06:11

> よくある認証方式なイメージです。 「よくある」とか言ってますが、質問者さん自身がよく分かってないのでは? よくあるのはクッキーを使うやり方だと思いますけど、その場合「ログイン済みの状態から、同ページを外部ブラウザで起動した時にログイン状態を保持」はできると思いますか?
pectin

2021/12/07 06:44

「よくある」の部分は、ご指摘の通り cookie を使う方法です。 その場合は、webview で保持している cookie と、外部ブラウザで保持している cookie は別物なので、この状態ではログイン状態の保持はできません。 そのため、外部ブラウザ起動時に連携用のトークンを使って外部ブラウザ起動側でもログイン済みの cookie を払い出すことで実現をしようかと考えています。 この方法よりもっとよい方法があるものなのかが知りたくて質問しました。 もちろん要件によるので「よい方法」とはなんですか?になるかもしれません。 うまく伝えられなくてすみません。
退会済みユーザー

退会済みユーザー

2021/12/07 07:16

そういう話ですと自分には「もっとよい方法」は提案できません。お役に立てずすみませんが他の方の回答をお待ちください。
pectin

2021/12/07 07:48

こちらこそ、お時間取らせてしまう形になりお手数おかけしました。 ありがとうございました。
pectin

2021/12/08 05:14

ありがとうございます webview ログインができている状態でに外部ブラウザを起動した場合に再度ログインに必要な ID・パスワードの再入力がない状態になっていればよいので、寿命が極端に短い使い捨てのトークンを使う形で試して見ようと思います。 外部ブラウザ起動直前にトークンを取得し取得後即時ブラウザ起動、サーバ側でトークン照合後は破棄することでセキュリティをなるべく保てるように考えてみます。
pectin

2021/12/08 05:16

SurferOnWww さん 意図を汲み取っていただけるように正しく説明できなかった点については、今後の課題として勉強します。 正しく説明ができきない = 自身の理解が足らないということを肝に命じます。 よい機会をありがとうございました。
guest

回答1

0

自己解決

webview ログインができている状態でに外部ブラウザを起動した場合に再度ログインに必要な ID・パスワードの再入力がない状態になっていればよいので、寿命が極端に短い使い捨てのトークンを使う形で試して見ようと思います。
外部ブラウザ起動直前にトークンを取得し取得後即時ブラウザ起動、サーバ側でトークン照合後は破棄することでセキュリティをなるべく保てるように考えてみます。

投稿2021/12/08 05:17

pectin

総合スコア95

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問