<oauth> タグを使用すると、サードパーティの OAuth 2 認証プロバイダーをアプリケーションに簡単に統合できます。このタグでは現在、Facebook と Google の認証をサポートしています。また、このタグでは OAuth 2 プロトコルをサポートする OAuth プロバイダーもサポートしています。そのようなプロバイダーには、Microsoft や Github などがあります。

シンタックス

<cfoauth
type = ""
clientid = ""
scope = ""
state = ""
authendpoint = ""
secretkey = ""
accesstokenendpoint = ""
result = ""
redirecturi = ""
urlparams = ""
>

属性

属性

必須 / オプション

デフォルト

説明

Type="facebook"
Type="google"

次のいずれかが必要です。

type または
accesstokenendpoint と authendpoint の組み合わせ

type と、エンドポイントの組み合わせのどちらかを指定できます。両方を指定することはできません。

 

現在サポートされている値は、
Facebook と Google です。Facebook および Google の認証ワークフロー
を暗黙的に
サポートしています。

clientid

required

 

アプリケーションを OAuth プロバイダーに登録する際に生成される固有の ID です。

scope

オプション

Facebook の場合:
デフォルトなし。スコープが指定されない場合、Facebook はデフォルトで
public_profile を指定します。

Google の場合:https://www.googleapis.com
/auth/userinfo.profile+profile

scope は、
開発者がユーザーに要求する権限です。
通常は、権限をコンマで区切った値
を指定します。Google の場合、
空白で区切ります。

詳細については、Oauth プロバイダーの
ドキュメントを参照してください。

例えば、Facebook
の認証後に、開発者がユーザーの電子メールアドレスと
友達リストに
アクセスする必要がある場合は、
scope="email,read_friendlists" と指定します。

もう 1 つの例として、Google
の認証後に、開発者がユーザーのコンタクトおよび
カレンダーに
読み取り専用でアクセスする必要がある場合は、
scope="https://www.googleapis.com
/auth/contacts.readonly https://www.googleapis.com/auth
/calendar.readonly" と指定します。

注意:scope 名は、OAuth プロバイダーによって異なります。

state

オプション

 

state 変数は、認証とリダイレクトが完了した後に、任意の情報を Web アプリケーションに渡す場合に使用します。この属性に渡した値は、認証後に Web アプリケーションに返されます。これは、クロスサイトリクエストフォージェリ(CSRF)保護に便利です。この属性には、ColdFusion のセキュリティ関連の CSRF 関数を使用できます。

authendpoint

次のいずれかが必要です。

type または
accesstokenendpoint と authendpoint の組み合わせ

type と、エンドポイントの組み合わせのどちらかを指定できます。両方を指定することはできません。

Facebook の場合:
https://www.facebook.com
/dialog/oauth

Google の場合:
https://accounts.google.com/
o/oauth2/auth

type を指定しない場合、これは、ユーザー認証用に呼び出されるエンドポイント URL として使用されます。

secretkey

オプション

 

パラメーターは、ソーシャルメディアアプリケーションの設定で表示されるアプリシークレットです。

accesstokenendpoint

次のいずれかが必要です。

type または
accesstokenendpoint と authendpoint の組み合わせ

type と、エンドポイントの組み合わせのどちらかを指定できます。両方を指定することはできません。

 

 type を指定しない場合、これは、アプリ認証用に呼び出されるエンドポイント URL として使用されます。

result

オプション

 

ログインの成功/失敗、失敗の理由、ユーザー名、ユーザー ID など、ユーザーのログイン情報を含む構造体です。

redirecturi

オプション

これには、デフォルトで、コードを実行している URL が設定されます。
そのため、OAuth 設定で、ユーザーがアプリケーション URL として次を指定し、


http://domainname/appname

コードを実行するファイルが次の場合、


http://domainname/appname/login.cfm

リダイレクト URI は次のようになります。
http://domainname/appname/login.cfm

ユーザーの認証後にリダイレクトします。

urlparams

オプション

 

URL クエリー文字列として authendpoint に渡される追加オプションです。


ステップ 1:OAuth 2 プロバイダーに登録

関連するサイト固有のアプリケーションの詳細情報を使用して、アプリケーションを OAuth 2 プロバイダーに登録します(例えば、Facebook の場合、Facebook アプリ ID とアプリシークレットを作成する必要があります)。

ColdFusion では、cfoauth タグに ID とアプリシークレットを指定します。

 

注意:ColdFusion では、Facebook および Google を暗黙的にサポートしています。他のサイトの場合は、ユーザーのアクセストークンエンドポイントなどの属性を使用します。

シンタックスを次に示します。

<cfoauth
type = "Facebook|Google...."
clientid = ""
scope = ""
state = ""
authendpoint = ""
secretkey = ""
accesstokenendpoint = ""
result = ""
redirecturi = ""
urlparams = ""
>

redirecturi には、デフォルトで、コードを実行している URL が設定されます。例えば、OAuth 設定で、ユーザーがアプリケーション URL として http://domainname/appname を入力し、コードを実行するファイルとして http://domainname/appname/login.cfm を入力した場合、リダイレクト URI は http://domainname/appname/login.cfm になります。

また、ドメインの詳細情報をソーシャルメディアサイトに登録します。


ステップ 2:認証プロセスを把握

  • ユーザーがクライアントサイトのログインボタンをクリックすると、権限を付与するためのポップアップが表示されます。
  • ユーザーがクライアントサイトにログインしていない場合は、ログインするように要求されます。
  • ユーザーが既にアプリケーションを承認しており、scope で要求されている権限を既に付与している場合は、すぐに redirect_uri にリダイレクトされます。
 

注意:ユーザーが既にアプリケーションを承認しているが、開発者が scope パラメーターで追加の権限を要求している場合は、ダイアログが開き、要求されているが、ユーザーがまだアプリケーションに付与していない権限が表示されます。

ステップ 3:実装

単純な認証の例を次に示します。

<cflogin>
<cfoauth
type = "Facebook"
clientid = "YOUR_CLIENT_ID"
secretkey = "YOUR_SECRET_KEY"
result = "res"
redirecturi = "http://localhost:8500/doc/login.cfm" >
<cfloginuser name = "#res.other.username#" password = "#res.access_token#" roles = "user"/>
</cflogin>
<cflocation url="http://localhost:8500/doc/index.cfm" >

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー