Auth0でTesselデバイスを認証および認可する
Tesselは優れたボードです。強力なハードウェア仕様や高い拡張性に加えて、Javascriptでもプログラミングすることができます。Kickstarterで発表があった直後から、サポートを表明し、早く手に入れたいと首を長くして待っていました。

そして、ついにその時がやってきました。Auth0からトークンを取得し、APIを呼び出して、最初のプログラムを書くことができるのです。
Tesselの目標は、Javascriptとの完全な互換性を実現することです。コアNodeモジュールの大部分も機能しますが、すべてではありません。詳細については、GithubのTessleドキュメントを参照してください。
サンプル
このサンプルはいたって単純です。
デバイス資格情報を使用して、Auth0でResource Owner(リソース所有者)エンドポイントを呼び出します。
トークンを受け取ります。
トークンを使ってAPIを呼び出します。

var http = require('https');
var tessel = require('tessel');
tessel.syncClock(function () {
var device_id = 'tessel-01';
var password = 'THE TESSEL PASSWORD';
authenticate(device_id, password, function(e,token){
if(e) return console.log("Error:" + e);
getDeviceProfile(token.access_token, function(e, profile){
console.log("Device profile:");
console.log(profile);
});
});
function getDeviceProfile(token, done){
request('{yourDomain}',
'/userinfo',
'GET',
{
"Content-type": "application/json",
"Authorization": "Bearer " + token
},
null,
function(e,response){
if(e) return done(e);
done(null, JSON.parse(response));
});
}
function authenticate(device_id, password, done)
{
request('{yourDomain}',
'/oauth/ro',
'POST',
{
"Content-type": "application/json",
},
JSON.stringify({
client_id: '{yourClientId}',
username: device_id,
password: password,
connection: 'devices',
grant_type: "password",
scope: 'openid'
}),
function(e,response){
if(e) return done(e);
done(null, JSON.parse(response));
});
}
function request(host, path, method, headers, body, done){
var options = {
hostname: host,
path: path,
method: method,
headers: headers
};
var req = http.request(options, function(res) {
res.setEncoding('utf8');
var response = "";
res.on('data', function (chunk) {
response += chunk;
});
res.on('end', function(){
done(null, response);
});
});
req.on('error', function(e) {
done(e);
});
if( body ) req.write(body);
req.end();
}
});
Was this helpful?
コードに関する注目すべき点:
Nodeと99%の互換性があります(唯一のデバイス固有モジュールは
tessel
で、これは適切な時間基準でSSLの呼び出しが行われることを確認するためだけに使用します)。request
関数は、http
モジュール関数の簡単なラッパーです。request
モジュールはTesselでは現在機能しません。
リソース所有者のエンドポイントでは資格情報(ユーザー名/パスワードなど)が必要であるため、Auth0に接続されたバックエンドユーザーストアは、これをサポートする必要があります(データベース接続やActive Directoryなど)。
Tesselの設定
tessel update
を実行し、SSL対応の最新のファームウェアをインストールしてください。Webに接続する必要があります。WiFiの設定は
tessel wifi
コマンドを使って行います。資格情報(
username
/password
など)を送信する場合には、必ず安全なネットワーク上で行います。
Summary(概要)
Tesselは多くの可能性を秘めた優れたボードです。このサンプルでは、これAuth0に接続することがどれほど簡単かをご紹介します。