Webサービスを多数使っていると、片方のサービスで変化があったら別なサービスに通知して欲しいと思うことはよくあります。Gmailで受信したら別なサービスに添付ファイルを転送して欲しいであったり、最近流行のスマートスピーカーと連携させるといった具合です。 そうした時に便利なのはこれから紹介する連携サービスです。それぞれ特徴がありますので、目的に合わせて使いこなしてください。 IFTTT helps your apps and devices work together - IFTTT この手のサービスとしては最も有名でしょう。50種類近くのカテゴリに分かれて、数百のサービス同士が連携できるようになっています。何かのサービスにアクションがあると、別なサービスを呼び出すという形式になっています。特にIoT系の連携に強いようです。 IFTTT helps your apps and devices work together - IFTTT Explore All Integrations | Zapier Zapierは1000以上のサービスが登録されており、サービスの数だけで言えば一番多いようです。また、複数ステップでの連携もサポートされています(有料版にて)。 Explore All Integrations | Zapier プロセスとタスクの自動化 | Microsoft Flow Office 365やYammerなどMicrosoftの持つサービス同士の連携はさすがに容易なようです。複数ステップでの連携も行えます。 プロセスとタスクの自動化 | Microsoft Flow Integromat - The glue of the internet 他のサービスに比べて連携データがJSONになっていることで連携が容易だったり、よりプログラマブルな連携を行える印象があります。フィルタやイテレータなど条件の追加も用意です。 Integromat - The glue of the internet Pipes この手のサービスの先駆者として知られるYahoo! Pipesを再現したサービスになります。ビジュアルプログラミングができ、ブロックを連携して一つのサービスを作り上げます。 Pipes Gmail Productivity Tools | Sync and Back up - cloudHQ クラウドサービス同士を連携します。Gmailを同期したり、バックアップするような使い方が考えられます。対応サービスは多くありませんが、クラウドストレージ系サービスと連携させる分には十分でしょう。 Gmail Productivity Tools | Sync and Back up - cloudHQ こうしたサービスもAPIがあればこそ連携ができるでしょう。多くのサービスは定期的にデータを取得するようになっており、リアルタイム連携ではありません。無料の場合は15分程度に1回実行されるようです。そうしたタイムラグも加味しつつ、連携サービスを作ってみると良いでしょう。 Slackに情報集約が進んでいるのと同様に、サービス同士を連携させることで手作業で収集していたようなストレスから解放されるはずです。
JSON Web Tokenは署名されたJSONで、改変を防止できる仕組みになっています。さらにBASE64エンコードされていることで、URLセーフな仕組みです。 すでに多くのサービスで使われているJSON Web Tokenについて、明示的に紹介されているサイトについてリストアップしました。 JSON Web Token(JWT)の紹介とYahoo! JAPANにおけるJWTの活用 - Yahoo! JAPAN Tech Blog Yahoo! IDを使って認証を外部サービス化する際、Yahoo! JapanではJSON Web Tokenでレスポンスが返ってきます。これはOpenID Connectの仕様に則って行われています。 JSON Web Token(JWT)の紹介とYahoo! JAPANにおけるJWTの活用 - Yahoo! JAPAN Tech Blog ユーザープールのトークンの使用 - Amazon Cognito Cognitoの認証後のトークンはID、アクセストークンともにJSON Web Tokenになっています。有効期限は1時間となっています。 ユーザープールのトークンの使用 - Amazon Cognito SORACOM Endorse で発行されたトークンを検証する | Getting Started | SORACOM Developers SORACOM EndorseはSORACOMが認証プロバイダとして、デバイスの認証サービスを提供します。この時発行される認証トークンがJSON Web Tokenになっています。 SORACOM Endorse で発行されたトークンを検証する | Getting Started | SORACOM Developers JWT(JSON Webトークン)を使用したシングルサインオンの設定 – Zendesk Support Zendeskが提供するシングルサインオン機能を使って、社内システムが取得したログイン要求をZendeskが信頼できるようにする機能でJSON Web Tokenが使われています。 JWT(JSON Webトークン)を使用したシングルサインオンの設定 – Zendesk Support JWT 認証 ‒ Qlik Sense Qlik SenseはBIツールを提供するQlikの一機能になります。この認証機能においてJSON Web Tokenが使われています。 JWT 認証 ‒ Qlik Sense Twilio API: Access Tokens - Twilio Twilioのボイス、チャット、ビデオといった機能においてTwilioのアクセストークンがJSON Web Tokenになっています。 Twilio API: Access Tokens - Twilio サービス間認証 | Cloud Endpoints | Google Cloud Platform Googleの認証はOpenID Connectに則っていますので、そのIDトークンはJSON Web Tokenになっています。 サービス間認証 | Cloud Endpoints | Google Cloud Platform Local and Remote Notification Programming Guide: Communicating with APNs Appleのプッシュ通知において、有効期限をなくしたProvider Authentication TokensはJSON Web Tokenになっています。 Local and Remote Notification Programming Guide: Communicating with APNs ウェブアプリにLINEログインを組み込む LINEログインはOpenID Connectをサポートしています。IDトークンがJSON Web Tokenで取得できますので、デコードして検証できます。 ウェブアプリにLINEログインを組み込む JSON Web Tokenは主に認証目的で利用されていることが多いようです。既存のセッションやIDトークン、アクセストークンを置き換える存在として注目に値します。また、OpenID Connectでは標準技術として採用されていますので、OAuth2も合わせて提供する場合にはJSON Web Tokenベースにするのも良さそうです。 ぜひ他社の導入事例を見つつ、自社でもJSON Web Token導入に取り組んでください。
改ざんを防止するJSONとして注目されているのがJSON Web Tokenです。署名することでデータの改ざんを防止しつつ、URLセーフな仕組みとなっています。JSON自体は誰でも閲覧できるのでセキュアな情報を送るのには適していませんが、改ざんしたとしてもそれを検証する仕組みが用意されていることで安心して利用できます。 そんなJSON Web Tokenがどういった場面で使われているのか紹介します。 セッション トークンの中にユーザIDであったり、ユーザ名、有効期限といった情報を持たせることで認証後のクライアントにセッションとして使ってもらいます。サーバ側ではセッションをデータベースで管理する必要がなくなります。 Cookieなどにデータを持たせておいて、アクセスの度にその内容をチェックすることで改ざんされていないか確認ができます。改ざんされていないのであれば、ユーザIDをそのまま利用できます。 セッションIDはユニークで単なる文字列なのが一般的ですが、その場合はセッションIDをデータベースに保存しておく必要があります。JSON Web Tokenを使うことでデータベースに保存することなく、安全なセッション管理ができます。 OAuth2トークン OAuth2トークンとしてJSON Web Tokenを使うことで、こちらもデータベースで管理する必要がなくなります。ただし有効期限だけを延ばすと言った操作はできないのでリフレッシュトークンを使ってトークン自体改める必要があります。 例えばGoogleのOAuthトークンはJSON Web Tokenになっています。公開鍵も配布されていますので、それを使ってトークンの検証ができるようになっています。 OpenID Connect OAuth2をベースにした認証プロトコルであるOpenID ConnectのIDトークンはJSON Web Tokenが使われています。ペイロード部分については任意の情報で構いませんが、ヘッダー部分については RFC 7515の中で決められています 。 メールアドレス確認 メールアドレスと有効期限をペイロードとしてJSON Web Tokenを生成し、メールアドレス認証用のURLとすればデータベースで確認コードを保存することなく、正しいメールアドレスであるという検証ができます。 改ざんはできないので別なメールアドレスを適用することはできませんし、自分のメールアドレスであればURLに含まれていても問題はないでしょう。また、JSON Web TokenはURLセーフになっていますので、URL中に含めるのも問題ありません。 JSON Web Tokenを使うことでこれまでデータベースに保存していた一時的なトークンや確認コードが不要になります。送られてきたデータを適切に検証すれば、その内容が正しいことが簡単に分かります。 なおJSON Web Tokenでは秘密鍵が重要になりますので、間違っても紛失しないようくれぐれも注意してください。また、BASE64デコードしているので情報はURLセーフである反面、含んでいる情報の1.5倍くらいに長くなってしまいます。あまり多くの情報を盛り込まない方が良いでしょう。
皆さま、明けましておめでとうございます。2018年になりました。個人、企業ともに新しいチャレンジを行っていく計画を立てるのに良い時期です。そこで、APIという視点において今年はどんな年になるのか紹介したいと思います。 ECサイト オンライン決済において、PCI DSSへの準拠が求められています。これは商品売買に限らず、クレジットカードを入力するような決済処理全般において対応が必要です。これは2018年03月までに対応が必要になります。 PCIDSSとは|日本カード情報セキュリティ協議会 従来、購入者がWebサイト上でクレジットカード情報を入力し、サーバサイドで決済を行うのが一般的でした。しかし、昨今の情報流出やセキュリティインシデントの発生に伴ってクレジットカード情報を受け取る場合にはPCI DSSの高いレベルでの準拠が求められるようになります。これは中小規模なECサイトでは負担が大きい仕組みと言えます。 そこで最近ではクレジットカード情報をAPIで決済サービスへ送信して、一時的に使えるトークンに置き換え、そのトークンと購入額で決済を行う仕組みが提供されています。StripeやSquare、PAY.JPといったAPIで提供されている仕組みを使うことで、ユーザビリティを損なうことなくセキュアな決済が実現できます。 2018年前半まではECサイトはPCI DSSへの対応に追われるでしょう。 銀行API 2017年05月に改正銀行法が成立し、APIを提供する努力義務が銀行業界に課せられることになりました。本来、APIで安全にアクセスすべきなのですが、銀行業界は閉鎖的であったり、技術的なイノベーションが遅れることもあって、スクレイピングによるデータ取得が横行していました。これは行儀の悪い仕組みであり、Webサイトのデザイン変更によってサービスが止まってしまうといったリスクもあります。 現在、銀行では特定企業と契約を結びながらAPIを利用できるようになっています。さらにマネーフォワードではみずほ銀行、三井住友銀行、住信SBIネット銀行に対して送金が可能になっています。これもAPIを使っています( ついにメガバンクが「更新系API」を提供開始、マネーフォワードが経費精算振込で連携一番乗り | TechCrunch Japan )。 2018年においても、この傾向はさらに強まっていくと考えられます。銀行のAPIは個人情報や資産に関係してくるので一般開放は難しいかも知れませんが、企業提携などによって使えるサービスが増えていくことでしょう。 GraphQL RESTfulの課題が幾つも散見されるようになってきました。それに対する答えの一つとしてGraphQLに注目が集まっています。RESTful APIをすべて置き換える存在ではありませんが、GraphQLを取得系APIとして公開するケースは増えています。 GitHub Universe 2017において、GitHubもGraphQLを公開しました。今後もこの流れは広がっていくと考えられます。 GraphQL | A query language for your API Open API Specification Swaggerを継承し、APIドキュメントフォーマットとしてOpen API Specificationが2017年07月にローンチしました。2.0と3.0には互換性がありませんが、コンバータは存在します。今後、ソフトウェアやサービスがOpen API Specificationに対応していくと考えられます。 APIドキュメントについては他にも幾つかのフォーマットが存在しますが、Open API Specificationが最もデファクトに近い存在になってきていると言えます。ツールや関連サービスなどのエコシステムが整ってきていますので、APIドキュメントをOpen API Specificationに対応させておくことで広がりを持たせられることでしょう。 Home - Open API Initiative OpenID Connect OpenID ConnectはOAuth2をベースにした認証技術となっています。IDトークンとアクセストークンの発行両方に対応しています。OpenIDは認証情報を引き回すことができ、アクセストークンを使えば外部サービスのデータを許可した部分においてだけ利用できます。 現在、多くのサービスにおいてOAuth2だけでなくOpenID Connectも提供されるようになっています。提供側としては両方を、利用する側としては必要な方を選ぶといいでしょう。2018年においてもこの広がりはさらに早くなっていくと考えられます。 OpenID Connect | OpenID JSON JSONの事実上、最後と言える仕様が2017年12月に公開されました( 事実上最後のJSON仕様「RFC 8259」と「ECMA-404 2nd Editon」公開。UTF-8エンコード必須に - Publickey )。ECMAとの統一も行われ、今後はUTF-8エンコードが必須になるということが決まりました。APIにおいてほぼデファクトになってきているフォーマットだけに、仕様が固まったのはAPI利用側/提供側双方にとってメリットがあるでしょう。 JSONをイチから作るケースはそうそうないかと思います。多くの場合、各プログラミング言語についているライブラリを利用することでしょう。JSONの仕様が固まったと言える状況なので、各ライブラリも最終版と言える状態になってくるのではないでしょうか。 APIのデータフォーマットにおいてはJSONの他、XMLやProtocol Bufferなど様々にあります。しかし最も扱いやすく、人に対してもある程度可読性が確保されているフォーマットとしてJSONは今後も利用が増えていくと思われます。 JSON APIを提供する、利用するのが当たり前になりつつある現在、2018年もAPIのエコシステムがますます広がっていくと思われます。金融系のような固い業界においてもAPIが浸透してきていますので、今年も多くの企業がAPI公開に踏み切ることでしょう。