OAuth2でのログイン

概要

ここではOAuthでのログインについて説明します。次の要素が含まれます。

ログインオプション

ログインオプション [application/vnd.com.nsn.cumulocity.loginOptionCollection+json]

名称 タイプ 発生回数 説明
self URL 1 このソースへのリンク
loginOptions LoginOption 0..n すべてのログインオプションのコレクション
名称 タイプ 発生回数 説明
self URL 1 このソースへのリンク
type String 1 "basic” または “oauth2"のタイプを含むテキスト
buttonName String 0..1 ログインボタンに表示されるテキスト
grantType String 0..1 使用されたoauth2フローを表すテキスト、現在はAUTHORIZATION_CODEのみ
initRequest String 0..1 OAuthログイン処理を開始するアドレス

GET - ログインオプションの取得

応答本体: application/vnd.com.nsn.cumulocity.loginOptionCollection+json 要求されるロール: 認証の必要なし

リクエスト例: ログインオプションのリソースを取得する

GET /tenant/loginOptions
Host: ...

応答例:

HTTP/1.1 200 OK
Content-Type: application/vnd.com.nsn.cumulocity.inventoryApi+json;ver=...
Content-Length: ...
{
    "loginOptions": [
        {
            "buttonName": "Login with oauth",
            "grantType": "AUTHORIZATION_CODE",
            "initRequest": "https://tenant_id.cumulocity.com/tenant/oauth?response_type=code&tenant_id=tenant_id",
            "self": "http://tenant_id.cumulocity.com/tenant/loginOptions/oauth2",
            "type": "oauth2"
        },
        {
            "self": "http://tenant_id.cumulocity.com/tenant/loginOptions/basic",
            "type": "basic"
        }
    ],
    "self": "http://tenant_id.cumulocity.com/tenant/loginOptions/"
}

ログインフロー

ログインフロー

リモートの認可サーバにログインして、Things Cloudへ正常にリダイレクトされた後、codeパラメータがリクエストパラメータとして渡され、アクセストークンと引き換えられます。トークンは、ブラウザーにCookieとして保存されます。

POST - OAuthを使用したログイン

要求されるロール: 認証の必要なし

リクエスト例: POST - 認可コードグラントでのログイン

POST tenant/oauth?grant_type=authorization_code&code=<<code>>
Host: ...

応答例:

HTTP/1.1 200 OK
Content-Length: ...
Set-Cookie: ...