<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ja-OAuth on Junpei Kawamoto</title>
    <link>https://www.jkawamoto.info/tags/ja-oauth/</link>
    <description>Recent content in ja-OAuth on Junpei Kawamoto</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>junpei.kawamoto@acm.org (Junpei Kawamoto)</managingEditor>
    <webMaster>junpei.kawamoto@acm.org (Junpei Kawamoto)</webMaster>
    <copyright>&amp;copy; 2016-2017 Junpei Kawamoto</copyright>
    <lastBuildDate>Fri, 12 May 2017 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://www.jkawamoto.info/tags/ja-oauth/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>OAuthアクセストークンを使ってAzure Storageにアクセスする</title>
      <link>https://www.jkawamoto.info/blog-ja/access-azure-storage-with-oauth-token/</link>
      <pubDate>Fri, 12 May 2017 00:00:00 +0000</pubDate>
      <author>junpei.kawamoto@acm.org (Junpei Kawamoto)</author>
      <guid>https://www.jkawamoto.info/blog-ja/access-azure-storage-with-oauth-token/</guid>
      <description>本稿は Qiita 投稿記事 のバックアップです．
 概要 OAuthアクセストークンを使ってMicrosoft Azureにアクセスするでは Swagger で生成したクライアントで OAuth アクセストークンを利用する方法を紹介したが， 本記事では，Azure Storage SDK for Go を利用する方法を紹介する．
API アクセスキー Azure Storage SDK のクライアントはアクセストークンではなく，アクセスキーを必要とする． このアクセスキーは Storage API ではなく，Storage Accounts API 経由で取得する． また，Storage API は Azure Storage SDK からアクセスできるが，Storage Accounts API はアクセスできないので， 例によって Swagger を使って Azure REST API Specifications からバインディングを用意する必要がある．
$ swagger generate client \ -f https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-storage/2016-12-01/swagger/storage.json \ -t storage  Storage Accounts API 生成されたソースコードを用いて，先ずは Storage Accounts API のクライアントを作成する NewStorageAccountsClient 関数を定義する．</description>
    </item>
    
    <item>
      <title>OAuthアクセストークンを使ってMicrosoft Azureにアクセスする</title>
      <link>https://www.jkawamoto.info/blog-ja/access-azure-using-oauth-tokens/</link>
      <pubDate>Wed, 10 May 2017 00:00:00 +0000</pubDate>
      <author>junpei.kawamoto@acm.org (Junpei Kawamoto)</author>
      <guid>https://www.jkawamoto.info/blog-ja/access-azure-using-oauth-tokens/</guid>
      <description>本稿は Qiita 投稿記事 のバックアップです．
 概要 
Microsoft Azureを利用するデスクトップアプリのデバイス認証にて取得したアクセストークンを， Go から Microsoft Azure を利用するにて紹介した Swagger で生成したクライアントから利用する方法． API によって微妙に関数の形が変わるため，生成されたソースコードを見ながらどこでトークンを渡せるのか調べる必要があるが，おおよそ次の二種類に分かれると思われる．
メソッドが認証情報を受け取る場合 最も簡単なのは，認証情報を受け取るタイプのメソッドが生成された場合である． 例えば，次のようにして生成できる 2016-09-01 版の Resource API
$ swagger generate client \ -f https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-resources/resources/2016-09-01/swagger/resources.json \ -t resource  では，リソースグループの作成または更新を行う関数が次のように定義されている．
func (a *Client) ResourceGroupsCreateOrUpdate( params *ResourceGroupsCreateOrUpdateParams, authInfo runtime.ClientAuthInfoWriter ) (*ResourceGroupsCreateOrUpdateOK, *ResourceGroupsCreateOrUpdateCreated, error)  この runtime.ClientAuthInfoWriter型 は，go-openapi/runtime ライブラリにて
import &amp;quot;github.com/go-openapi/strfmt&amp;quot; type ClientAuthInfoWriter interface { AuthenticateRequest(ClientRequest, strfmt.Registry) error }  と定義されているのだが，go-openapi/runtime/client に OAuth アクセストークン (BearerToken) から ClientAuthInfoWriter を生成する BearerToken 関数が用意されている．</description>
    </item>
    
    <item>
      <title>Microsoft Azureを利用するデスクトップアプリのデバイス認証</title>
      <link>https://www.jkawamoto.info/blog-ja/device-authorization-for-azure/</link>
      <pubDate>Tue, 09 May 2017 00:00:00 +0000</pubDate>
      <author>junpei.kawamoto@acm.org (Junpei Kawamoto)</author>
      <guid>https://www.jkawamoto.info/blog-ja/device-authorization-for-azure/</guid>
      <description>本稿は Qiita 投稿記事 のバックアップです．
 概要 
Go から Microsoft Azure を利用する場合，アクセストークン使用する． このアクセストークンの取得には複数の方法が用意されているが， CLI コマンドでも利用されているデバイスコードを用いた認証方法についてまとめる．
アプリケーションの登録  認証プロセスで必要となるクライアント ID を取得するために， Azure ポータルにてアプリケーションの登録を行う．

アプリの登録は，ポータルのセキュリティ + ID カテゴリにある「アプリの登録」から行える．

今回作成するのは，デスクトップアプリケーションなので，アプリの種類としてネイティブを選ぶ． リダイレクト URL は文字列として有効な URL であれば適当で良いので， 例えば，http://localhost:18230 などとしておく．
デバイスコードの取得 デバイスコードの取得には， https://login.microsoftonline.com/common/oauth2/devicecode にクライアント ID とアクセスを要求するリソースをクエリとして追加し問い合わせることで取得できる． レスポンスは次のような構造を持つ JSON 形式で取得できる．
type DeviceCode struct { UserCode string `json:&amp;quot;user_code&amp;quot;` DeviceCode string `json:&amp;quot;device_code&amp;quot;` VerificationURL string `json:&amp;quot;verification_url&amp;quot;` ExpiresIn string `json:&amp;quot;expires_in&amp;quot;` Interval string `json:&amp;quot;interval&amp;quot;` Message string `json:&amp;quot;message&amp;quot;` }  次の関数はデバイスコードを取得し上記の構造体として返す．</description>
    </item>
    
    <item>
      <title>Google Cloud for Goで OAuth アクセストークンを使う</title>
      <link>https://www.jkawamoto.info/blog-ja/use-access-token-from-google-cloud-go/</link>
      <pubDate>Fri, 05 May 2017 00:00:00 +0000</pubDate>
      <author>junpei.kawamoto@acm.org (Junpei Kawamoto)</author>
      <guid>https://www.jkawamoto.info/blog-ja/use-access-token-from-google-cloud-go/</guid>
      <description>本稿は Qiita 投稿記事 のバックアップです．
 概要 GoogleAPIを利用するデスクトップアプリのOAuth2.0認証では，アクセストークンの利用例として Google APIs Client Library for Go を使って利用可能な Zone リストを取得する方法を紹介した．
Go から Google Cloud Platform にアクセスする方法には，Google Cloud for Go を利用する方法もある． Stackdriver Logging からログを取得するや Stackdriver Logging からログを取得する(その２) で用いている logadmin，logging パッケージはこの Google Cloud for Go ライブラリに含まれている．
本記事では，取得した OAuth 2.0 アクセストークンを，Google Cloud for Go のクライアントから利用する方法を紹介する．
Google Cloud for Go のクライアント Google APIs Client Library for Go では，アクセストークンが付与された http.Client を渡すことで，そのトークンを使用していた． 一方 Google Cloud for Go のクライアントでは，TokenSource を接続オプションとして NewClient に渡すことで使用する．</description>
    </item>
    
    <item>
      <title>GoogleAPIを利用するデスクトップアプリのOAuth2.0認証</title>
      <link>https://www.jkawamoto.info/blog-ja/oauth2-for-google-api/</link>
      <pubDate>Thu, 04 May 2017 00:00:00 +0000</pubDate>
      <author>junpei.kawamoto@acm.org (Junpei Kawamoto)</author>
      <guid>https://www.jkawamoto.info/blog-ja/oauth2-for-google-api/</guid>
      <description>本稿は Qiita 投稿記事 のバックアップです．
 概要 Google の API を利用するデスクトップアプリが OAuth 2.0 プロトコルを走らせる方法． Go 標準のoauth2パッケージはほとんどの処理を実行してくれるが， 認証コードを受け取るために一時的な ローカルWebサーバを立てることと， Code verifier の計算は自前で行う．
アプリの登録 まず初めに，コンソールの認証情報ページでアプリのクライアント ID とクライアントシークレットを取得する．
コンソールの API Manager から認証情報を開き，認証情報を作成，OAuth クライアント ID を選択する．

デスクトップアプケーションから使用するため，その他を選び作成する．

クライアント ID とクライアントシークレットが表示されるので控えておく． なお，忘れてしまっても認証情報ページで再確認できる．

Code verifier の計算 サーバから送られてくる認証コードを横取りされる中間者攻撃を防ぐため， Code verifier というものを利用できる． 具体的には，認証コードの要求時にランダム文字列(Code verifier)のハッシュ値を送っておき， アクセストークンを要求する時にはランダム文字列を送る． 認証コードが横取りされてもランダム文字列の方がバレなければ アクセストークンを不正に取得されることを防げる．
Code verifier は，次の文字からなる長さ43から128の文字列と決められている．
 [A-Z] / [a-z] / [0-9] / - / . / _ / ~  まずは，Code verifier の生成関数を作る．</description>
    </item>
    
  </channel>
</rss>