OSSによるマッシュアップ
& サービス化を実現する、
Open棟梁 サービス開発基盤
中堅、中小企業の業務に最適なオープンソース活用セミナー
OSS コンソーシアム, .NET 開発基盤部会, Ld : 西野大介
Open棟梁 基幹システム開発基盤
BusinessLogic層
Transaction Root
ベースクラス1
サブクラス
ベースクラス2
DataAccess層
ベースクラス1
サブクラス
ベースクラス2
開発期間を2割短縮させる OSS の .NET 開発基盤。
レガシーな基幹システム開発の難易度も依然として高い。
Open棟梁 01-xx : 基幹システム開発にフォーカス
.NET リッチクライアント
WWWブラウザ
HTML
WebAPI
(バイナリ転送)
WebAPI
(REST)
通信制御機能
.NET サービスインターフェイス
バイナリ・オブジェクト転送
汎用サービスインターフェイス
SOAP, REST (JSON, XML)
バイナリ・オブジェクト転送
Presentation層:ASP.NET
Web Form or MVC
様々なスマート・デバイス
SOAP, REST (JSON, XML)
DBMS
XML or SQL
ファイル
<?xml version="1.0" encoding="shift_jis" ?>
<ROOT>
SELECT A, B, C, D
FROM T
<WHERE>
WHERE
<IF>AND A = @A</IF>
<IF>AND A LIKE @A_LIKE</IF>
<IF>AND B = @B</IF>
<IF>AND B LIKE @B_LIKE</IF>
<IF>AND C = @C</IF>
</WHERE>
ORDER BY
<IF name="SEQUENCE">A<ELSE>B</ELSE></IF>
</ROOT>
Open棟梁 02-xx : サービス開発にフォーカス
Open棟梁
02-00
生産性・品質を向上させる
3層フレームワーク
• 共通部品群
• 開発支援ツール群
セキュリティを
考慮した認証基盤
シングルサインオンや
ソーシャルログインの
サポート
多様なアーキテクチャに
対応したテンプレート群
オンライン決済など
外部サービスとの連携
v02-00以降のコンセプトは、迅速なサービスインの実現
… Open棟梁 01-xx からの継続機能 … Open棟梁 02-00 での新機能
1. Open 棟梁 02-00 以降は
サービス開発にフォーカスしている。
2. サービス開発では、従来の基幹システムと
比較して認証・認可の仕組みが大きく異なる。
3. そのサービス界隈での
認証・認可の仕組みはどうなっているか?
• サインイン ( = ログインのこと)
Facebook(や、LINE、Twitter)にローカル・ログイン
自前ユーザ・ストアを使用してForms認証、
認証チケットを使用してWebApp、WebAPIをガード。
• シングルサインオン ( SSO )
サービスが信頼する Identity Provider (IdP) に認証処理
を委譲し、サービス(のWebApp、WebAPI)は、このIdPでの
認証結果を受けて認証済みアクセスを可能にする。
サービス界隈の認証・認可ユースケース(1)
• 認証・認可
アプリAから、アプリBの機能やリソースへの利用権限を
要求する。アプリBで認証・認可、アプリBへ発行された
access tokenをアプリA(のWebAPI)へ渡す。
• IDフェデレーション
IdP Aに、IdP BのID属性を連携することで、
 サインアップ・プロセスを省略し、
 ドメインを跨いだSSOを実現する。
サービス界隈の認証・認可ユースケース(2)
これらの認証技術は難しいので、
(SE・開発者でも知らない人がほとんど)
事例を交えて説明すればピンとくるかも。
…昨今のIdPには、下記プロトコルを用いた
Secure Token Service (STS) 機能
が実装されているのがポイント。
• Web系 : OAuth, OpenID Connect
• エンプラ系 : SAML, WS-Federation
• サインイン( = ログインのこと)
サービス界隈の認証・認可ユースケース(1-1)
Webブラウザ ネイティブ
• シングルサインオン(SSO)
サービス界隈の認証・認可ユースケース(1-2)
MicrosoftのSaaSに、Microsoft アカウントでサインイン
MicrosoftのSaaS
Microsoft アカウントでサインイン
URLを確認したところ、プロトコルには、
WS-FEDを使用しているもよう。
• 認証・認可 (OAuth, OpenID Connect)
サービス界隈の認証・認可ユースケース(2-1)
Twitter連携アプリに、当該アカウントを使用した
機能・リソースに対するアクセス許可を付与する。
認可
権限
中には、悪質なTwitter連携
アプリもあるので注意する。
URLを確認したところ、
Twitterは認可プロトコルに、
OAuth1.0を使用しているもよう。
(1)
(2)
• IDフェデレーション
サービス界隈の認証・認可ユースケース(2-2)
参考 : Azureサブスクリプションの所有者と組織アカウント
https://www.slideshare.net/kuniteruasami/azure-62175660
引用 : ハイブリッド ID で必要なポートとプロトコル - Azure | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/active-directory/connect/active-directory-aadconnect-ports
職場または学校アカウント
= 組織アカウント
<IDフェデレーションの裏側>
= Hybrid-IdP 構成となるのが一般的
SaaS → Azure AD → ADFS構成の場合、
連携には、OpenID, OAuth系プロトコルではなく、
エンプラ系(SAML or WS-FED)プロトコルを使用。
1. このようにサービス上で、
多様な認証技術が使用されている。
2. サービス開発においては、さまざまな外部
サービスを組合せて作り上げるのが一般的。
3. 外部サービスの組合せにおいては、
ID(ユーザアカウント)同士の紐付けが重要。
4. この“ID”は、認証によって特定される。
サービス統合の事例(o365 - Yammer)
Yammer のAzure移行や、Azure ADとの
ID の連携に関する取り組みの成果として、
Yammer がOffice 365 に完全に統合。
• Yammer の会話を Skype の通話に引き継ぐ
• Outlook予定表から会議スケジュール設定
• YammerからOneDriveファイルにアクセス
引用 : Yammer がついに完全統合へ – Office Blogs
https://blogs.technet.microsoft.com/microsoft_office_/2016/02/15/get-ready-for-yammer/
様々なプロダクトを組合せ、サービス化を可能に
サービスの重要性が高まっているが、サービスの利
用にも、開発にも、認証基盤が不可欠。しかし、ぜい弱
性を十分に考慮した認証基盤の開発は、とても大変。
→ Open棟梁 汎用認証サイトを活用!
• サインアップ、サインイン・サインアウト
• シングルサインオン(SSO)
• 認証・認可や、IDフェデレーション
• セキュリティや、ぜい弱性の考慮
様々なプロダクト
あらゆる言語・Platform の
Web Site からでも汎用認証
サイトを利用したSSOが可能!
様々なプロダクトを組合せ、サービス化を可能に
汎用認証サイト
wwwブラウザ
Web Site A
Web Site B
Web Site C
汎用認証サイト
(STS専用モード)
Intranet Internet
UserStore
UserStoreオンライン決済
ノーティフィケーション
外部ログイン
IDフェデレーション
シングルサインオン
(SSO)
様々なプロダクトをスマートデバイスで利用したい
今や、スマホ / タブレッド(スマートデバイス)の業務
利用は当たり前の時代に。
• デバイスと連動した機能も実現可能!
• プッシュ通知
• GPS連携
• メッセンジャー連携
• 迅速なサービスインを実現するアーキテクチャ
Open 棟梁で、これらの機能を mBaaS として実装中!
様々なプロダクトをスマートデバイスで利用したい
汎用認証サイト
(IdMaaS) Resources Server A
Resources Server B
Resources Server C
UserStoreオンライン決済
ノーティフィケーション
外部ログイン
様々なプロダクト
あらゆる言語・Platform の
Web APIから連携が可能!
ハイブリット・アプリ
汎用Mobile Backend
(mBaaS)
• プッシュ通知
• GPS連携
• メッセンジャー連携
ASP.NET Core2 WebAPI
外部サービス
オレンジ色部分が、現在開発中の Open 棟梁 追加コンポーネント
クライアント・サイド
Cordovaテンプレート
サーバー・サイド
ASP.NET Core2 MVC
認証・認可
やってみた感想、・・・ 非常に難しい。
mBaaS を活用したスマホ・アプリ開発は、
「フロントエンドからWeb APIを呼び出すだけ。簡単。」
・・・ではなかった。
テンプレート整備によって、「認証」 により、
「フロントエンド」 と 「サービス」、または、
「オンプレミス」 の間を連携させるノウハウを凝集させ、
コストの大幅削減デリバリの大幅短縮を図る必要がある。
デモンストレーション!
「汎用認証サイト & Cordovaテンプレート」による、
「スマホ(ハイブリッド)アプリ」における、
シングルサインオン・エクスペリエンス(SSO-UX)
参考 :OAuth for Native Apps | GREE Engineers' Blog
http://labs.gree.jp/blog/2015/12/14831/
知っておきたい7つのID連携実装パターン - Yahoo! JAPAN Tech Blog
https://techblog.yahoo.co.jp/web/auth/id_federation_impl_patterns/
本日のまとめ
• サービスベースのアーキテクチャで、
サービスインを迅速化する、Open棟梁 サービス開発基盤。
• サービスベースのアーキテクチャでは、
 サービスのサイズが重要という訳では無い。
 サービスの抽象化により、サービス間連携への注力を可能に
することで、価値に集中できるようになり、生産性が向上する。
 認証技術を駆使し、サービスを組み合わせる方式が慣例。
 ぜい弱性やUI / UXを考慮した認証方式の検討が重要。
本日のまとめ
参考
• マイクロサービス
• マイクロサービスの終焉 | 開発手法・プロジェクト管理 | POSTD
http://postd.cc/the-end-of-microservices/
• ベンチャー企業のエンジニアが一人でアプリを開発しなければならない時に、
フレームワークやサービスの選定で悩んでいること→結論追記しました
https://qiita.com/osamu1203/items/8d6c548a6ef7f4178970
• スマホアプリの認証
• OAuth for Native Apps | GREE Engineers' Blog
http://labs.gree.jp/blog/2015/12/14831/
• 知っておきたい7つのID連携実装パターン - Yahoo! JAPAN Tech Blog
https://techblog.yahoo.co.jp/web/auth/id_federation_impl_patterns/

OSSによるマッシュアップ&サービス化を実現するOpen棟梁サービス開発基盤