「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
v02-20でリリース予定。
内容 †
- Apache Cordovaのテンプレート
- 通常のWebアプリケーションやSPAアプリケーションをホストする。
ニーズ †
- 既存WebアプリにWebAPIを追加、フロントエンドにデータ提供を行うだけで、
- 優れたUXを提供するフロントエンドが求められている。
- また、スマホ・ネイティブ機能をpluginさせたい。
- そんな開発を迅速化する、ハイブリットアプリ開発用のCordovaテンプレート
- テンプレート化
- plugin検証
- 様々なバックエンドと連携。
- IdMaaS機能(認証・決済, etc.)
- mBaaS機能(ストレージ, プッシュ通知, etc.)
機能 †
適切な設定 †
ホワイトリスト †
Cordovaの機能にある。
ネイティブアクセス(plugin) †
Cordovaの機能にある。
プッシュ通知 †
- phonegap-plugin-push
- プッシュ通知サービスと連携
地理位置情報 †
- cordova-plugin-geolocation
- GPSサービスと連携
認証 †
要件:認証のUXの統一 †
- すべての認証を汎用認証サイト経由で行う。
- アプリ
- Webアプリ
- WebAPI
- スマホ・ネイティブ or ハイブリットのローカル・ログイン
- プロトコル
- この辺(フロントエンドの認証)のニーズは高いと思われる。
- VS tools for Cordovaのpluginのトップも、ADALになっている。
- また、以下のような、Webページも存在するので、
外部ブラウザ ⇔ ネイティブ(ハイブリッド) †
諸事情から、外部ブラウザ前提になるので、
外部ブラウザ ⇔ ネイティブ(ハイブリッド)についての検討が必要。
- ログイン前
- ログイン画面
- 認可エンドポイント
- ログイン完了後、認可エンドポイントで、QueryString?のflag情報をClaimに格納する。
- 認可エンドポイントを通過して、redirectエンドポイントに遷移する。
- ログイン後
- redirectエンドポイント(response_type=code)
- redirectエンドポイント(response_type=token)
サポート †
デプロイ、ストア登録手順の整備 †
Android †
iOS †
標準的?pluginの検証 †
既定で有効 †
- cordova-plugin-inappbrowser
- cordova-plugin-customurlscheme
- cordova-universal-links-plugin
How to †
UserAgent?を書き換える。 †
OverrideUserAgent?, AppendUserAgent? †
- config.xmlの設定ができる模様。
- OverrideUserAgent?
- AppendUserAgent?
- この設定は、
- 内部(WebView?)で開いた場合に有効。
- 外部ブラウザで開いた場合は、(当然ながら)無効。
参考 †
実機の際は、以下のサイトを活用できる。
リンクを外部ブラウザで開く †
既定では、
- httpが無いとWebView?内部で開く
- httpが有ると外部ブラウザで開く
cordova-plugin-inappbrowser †
cordova-plugin-inappbrowserというpluginが利用できそう。
参考 †
外部ブラウザからネイティブに遷移 †
ネイティブには、ハイブリッド(Cordova)を含む。
cordova-plugin-customurlscheme †
cordova-plugin-customurlschemeというpluginが利用できそうだったが、
Custom URL Schemeに、「Custom URL Scheme上書き攻撃」というのがあるのでNG。
cordova-universal-links-plugin †
参考 †
- Cordova tips - Custom URL scheme に対応させよう | phiary
http://phiary.me/cordova-tips-custom-url-scheme/
- pluginを追加する。
cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME=hoge --save
- urlを受け取る。
function handleOpenURL(url) {
setTimeout(function() {
alert("received url: " + url);
}, 0);
}
- EddyVerbruggen?/Custom-URL-scheme:
前提 †
認証 †
ログインの種類 †
- Webアプリへのログイン
Authenticate Code flow
- WebAPIへのログイン
Implicit flow
- ネイティブアプリ(ハイブリットアプリ)へのログイン
- Implicit flow
- Web Storage - localStorage等に記憶
ここで、恐らく、(2), (3)は同じImplicit flowで、
Bearer Tokenの取得後に、userinfoエンドポイントにアクセスするなどして認証完了とする。
UX的な前提 †
- あり
パスワード・マネージャを使用したいので、
なるべく、外部ブラウザを選択して使用したい。
- なし
内部(WebView?)でも外部ブラウザでも手打ち可能。
- アプリからのブラウザ起動
- 既定で内部(WebView?)になっている人。
- 既定で外部ブラウザになっている人。
- サインイン
- 内部(WebView?)でサインイン
非推奨らしい。
- 外部ブラウザを選択してサインイン
- パスワード・マネージャに依存していることが多いので、
認証時に使用する外部ブラウザを選択可能にする。
- この機能は、サーバ側実装も必要になるので、
OAuth 2.0 Resources Server(ASP.NET Core 2.0)にこの実装を追加する。
参考 †
osscons.jp †
マイクロソフト系技術情報 Wiki †
.NET 開発基盤部会 Wiki †