ようこそ! Geeklog Japan 2019/01/17 14:35 JST


 2017/01/31 23:26 JST (参照数 1058回)  

状態: オフライン

yonezawaizumi

Forum User

Newbie
登録日: 03/18/09
投稿数: 9
場所:東京都墨田区

大変にごぶさたしております。

httpとhttpsを、同じサイトとして同居運用することについて、ご教示をいただきたく、書き込ませていただきます。

先に「実現可能かどうかをぜひ知りたい」ことがらをまとめますと、以下のとおりとなります。
これらは可能なのか、ご教示いただけると大変に助かります。

  • 完全に同じドメイン名、完全に同じデータベース内容で、httpによるアクセスとhttpsによるアクセスを共存させたい
  • ページ内のサイト内リンクのURLはすべて、httpでアクセスされていた場合はhttpに、httpsでアクセスされていた場合はhttpsにしたい
  • 双方で認証セッションなどのcookie情報を共有する必要はないが、いずれかでログインした以降は、サイト内での移動中のログイン情報は通常どおりに保持されてほしい
  • 自己所有のオンプレミスサーバーなので、インフラまわりの設定は完全に自由に変更可能
  • できれば現在使っている1.8.0のままで実現できるのがベストだが、「それはだめだけど最新版にしたら可能」ということであれば、最新版にアップデートすることは可能

以下、超長文で、上記の背景を書かせていただきます。

現在、降りつぶし.netというサイトをGeeklogで運用させていただいておりまして、その中で登録ユーザー専用の機能として、独自のデータをユーザーごとに登録・編集すること、およびiPhone用・Android用の同様のアプリとそのデータを同期させること、を、UIをシームレスにつなぐ形で実装し、同様に運用させていただいております。

おかげさまでとても快適なサービスを提供できている自負もあるのですが、このたび、iPhoneアプリにおいて「ATS」という、「https通信を原則として義務付ける」というルールが秒読みとなっておりまして、それで困難に陥ることが必至となってしまったのです。
これに対応するためには、少なくともiPhoneアプリにおいて、Geeklog内のデータと同期をするためのURLを、httpsにしなければならなくなります。

もちろん、一般論として、個人情報をお預かりするサービスなので、すべてをhttpで統一できればベターには違いなく、この際一気にhttpsに切り替えてしまう、というのが理想論です。
しかし実際には、現在iPhoneアプリとしてリリース可能なのはiOS 8.0以降対応のもののみであり、iOS 7以下のままで以前のアプリを使っている方はhttpでしかアクセスができません。
またAndroidに関しても、現在のGoogle Play開発者サービスが2.3以降にしか対応していないため、以前リリースしていた版の対応下限であった2.2のユーザー(ごく少数ながらいらっしゃいます)もhttpでしかアクセスできないのです。

「それならば、ログイン画面へのアクセスを、httpsにリダイレクトすればよいのでは?」という対応策はすぐ思いつきますが、以下の理由で、それも困難です。
現状、iPhoneアプリ・Androidアプリともに、GeeklogのユーザーIDの値で、Geeklogに統合された独自データをユーザー別に管理しています。そのため、両スマホアプリとGeeklogとでデータを同期する際には、エンドユーザーにGeeklogにログインしていただく必要があります。
そしてそのログインは通常のパスワードログインの他、TwitterのOAuthにも対応しておりますが、その遷移はアプリ内部のWebView内で行っております。そうしないと、Twitter認証をシームレスに行えないためです。
しかし、Twitterの認証画面内にはさまざまな、別ページへと遷移するリンクがあります。そしてこれらをタップされてしまった場合、本来Geeklogとデータを同期するための画面のはずが、際限なく別サイトに遷移できることになってしまい、ユーザービリティーが悪くなったり、それをキャンセルするUIをWebView外に設けなければならなくなったりする、という問題があるのです。
そのため、アプリのコードで、そのWebView内でリンクがタップされた場合、そのURLを見て、認証内の遷移でない場合はアプリ外の標準ブラウザーを起動させる、という実装にせざるを得ません。そしてその判定のために、リクエストURLを文字列マッチングでチェックするコードが両スマホアプリに組み込まれており、それがhttpで判定されてしまっているのです。
その結果、古いスマホアプリでは、リダイレクトによるhttpsの強制が不可能になってしまっております。

これらの事情により、サイトのhttps化を図るには、

  • httpとhttpsを完全に共存させる
  • スマホアプリをiOS7以下やAndroid 2.2でお使いのユーザーを完全に切り捨て、また対応バージョンへのアップデートをしていないユーザーはアップデートしない限り一時的に切り捨てる

のいずれかしかない、ということになってしまっております。

なお、Geeklogのバージョンを1.8.0から上げていない理由は、当時いくつかの不満があり、独自にコードにパッチをあてたのですが、その差分の管理を当時怠ってしまったため、アップデートがめんどうだ、というものです(^^ゞ。こちらは私だけの努力でどうにかなることなので、必要とあらばもちろんやることができます。

以上、なにとぞよろしくお願いいたします。


 2017/02/01 04:40 JST  

状態: オフライン

Ivy

Site Admin

管理者
登録日: 01/01/04
投稿数: 5855
場所:Tokyo
おひさしぶりです!

両方で活用するhackは、Wikiをどうぞ。
http://wiki.geeklog.jp/index.php?title=SSLと両方で運用する
どういったパッチをあてられたのかがわかれば、それを本体に、コンフィギュレーションで設定できるようにするなどしますので、目的とハック内容をフィードバックしていただけると助かります^^

GitHubでforkしてプルリクなど。

 2017/02/01 08:59 JST  

状態: オフライン

yonezawaizumi

Forum User

Newbie
登録日: 03/18/09
投稿数: 9
場所:東京都墨田区

Ivyさん、ありがとうございます!
まさに足下暗し、Wikiの検索を怠っておりました。

これって、管理画面のコンフィギュレーションで登録しているサイトURLなどもすべて実行時に上書きされる、という理解でよいでしょうか?

旧来のハックについては現バージョンでは不要になっているものもあるかもしれず、というかそもそも当の私がすっかり何をどうしたかすら覚えていないので(゜o゜;、この機会にじっくり元ソースとの差分とさらに現行最新ソースを見て、調べてみて、もし提案できることがあればプルリクしようと思います。


 2017/02/01 09:29 JST  

状態: オフライン

Ivy

Site Admin

管理者
登録日: 01/01/04
投稿数: 5855
場所:Tokyo
Quote by: yonezawaizumi

これって、管理画面のコンフィギュレーションで登録しているサイトURLなどもすべて実行時に上書きされる、という理解でよいでしょうか?

はい、そうです! プルリク、お待ちしています!

 2017/02/05 14:01 JST  

状態: オフライン

yonezawaizumi

Forum User

Newbie
登録日: 03/18/09
投稿数: 9
場所:東京都墨田区
おかげさまで、httpとhttpsでの混用運用ができるようになりました! ありがとうございました。 プルリクの検討はまた改めまして(^^ゞ

 2017/02/05 15:33 JST  

状態: オフライン

Ivy

Site Admin

管理者
登録日: 01/01/04
投稿数: 5855
場所:Tokyo
よかったです!

時刻はすべて JST , 現在の時刻は 02:35 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  • ゲストユーザの投稿を見る 
  • ゲストユーザ投稿可能 
  • 一部のHTMLを許可 
  • バッドワードをチェック