SSO連携
SSO(Single Sign On)連携とは、WORKBOXと顧客会社の間で1つのアイディを使ってアクセスできる統合ログイン連携を意味します。WORKBOXはSP(Service Provider)方式のSSOをサポートします。
DevelopersのSSOではOAuth 2.0とSAML(Security Assertion Markup Language) 2.0の2つの方式をサポートします。
① WORKBOXメニューのDevelopersにアクセスした後、設定項目の中でSSO設定を選択します。
② 設定選択のデフォルト値はOFFです。クリックしてONに設定します。
③ OAuth 2.0とSAML 2.0のうち1つを選択した後、該当の項目を入力して適用ボタンを押します。
OAuth2.0ベースのSSO
① WORKBOXサービスの使用
ユーザーはWORKBOXサービスを使用するためにウェブブラウザからURLにアクセスするか、WORKBOXアプリを実行します。
② Authorization Codeの発行をリクエスト
WORKBOXにログインされていない場合、顧客会社の認証システムでAuthorization Codeの発行をリクエストします。
③ (顧客会社にログインされていない場合は)ログインページを実行
顧客会社のシステムにログインされていない場合は、ユーザーに自主制作したログインページを提供します。
④ アイディ/パスワードを入力
ユーザーは顧客会社のログインポリシーに合わせてアイディ/パスワードを入力します。
⑤ 顧客会社の認証処理の後、Authorization Codeを発行
アイディ/パスワードで顧客会社のシステムで認証処理を行った後、Authorization Codeを発行します。顧客会社のシステムにすでにログインされている場合は、3~4番のステップを省略し、Authorization Codeを発行します。Authorization CodeはAccess Tokenを返すのに使い、消滅する一回性のコードでなければなりません。
⑥ Authorization Codeを転送(redirect)
最初のAuthorization Code発行リクエストの際に送信したRequestの中でWORKBOX認証システムのredirect_uriにAuthorization Codeをredirectします。
⑦ Authorization CodeでAccess Tokenをリクエスト
Authorization Codeをパラメータにし、顧客会社の認証システムにAccess Tokenをリクエストします。
⑧ Access Tokenを転送
顧客会社の認証システムはAuthorization Codeを検証した後、Access Tokenを発行して返します。
⑨ Access Tokenでユーザーの情報をリクエスト
Access Tokenをパラメータにし、顧客会社の認証システムにユーザーの情報をリクエストします。
⑩ ユーザーの情報を転送
顧客会社の認証システムはAccess Tokenを検証した後、ユーザーのログインemailの情報を返します。
⑪ WORKBOX認証トークンを発行
WORKBOXの認証システムはユーザーの情報をベースにWORKBOX用の認証トークンを発行します。
1. Web Login URL
ユーザーがWORKBOXウェブサービスにログインするためにアイディ/パスワードを入力するページです。ログインページは顧客会社の要求に合わせて直接制作します。
顧客会社のログイン処理の後、Authorization Codeを発行してredirect_uriに返します。
Request URL
https://顧客会社のドメイン/顧客会社のログインページ
WORKBOXのインフラセキュリティポリシーによって443ポートのみ使えます。
制作したRequest URLはNAVERクラウドプラットフォームコンソールDevelopersのSSO設定でWeb Login URLに登録します。
HTTP Method
GET
Request
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
response_type | String | Y | 認証過程に関する区分値で、どんな形の結果値を送信するかを明示。常に"code"という固定された文字列を使用 |
client_id | String | Y | NAVERクラウドプラットフォームコンソールDevelopersで登録したclient idの値 |
redirect_uri | String | Y | 認証処理の後、Authorization Codeを返すURLで、URLエンコーディングされている |
state | String | Y | CSRF(Cross-stie request forgery)防止のために任意に作成された固有の値(authorization code転送の際にurlに含ませてパラメータとしてstateの値を返す) |
loginId | String | N | ユーザーが入力したLoginアカウント |
2. Authorization Codeの発行
顧客会社のSSOシステムで顧客会社の認証およびSSOに必要な処理を行った後、Authorization Codeを発行してWORKBOXの認証システムにredirectします。
Request URL
URLはWORKBOX認証の際にシステムからログインページリクエストの際に転送したredirect_uriパラメータの値です。
例: https://WORKBOX認証システムのURL/authorizationURL
URLはユーザーの環境およびWORKBOXのポリシーによっていつでも変わる可能性のある値であるため、必ずredirect_uriに転送されたURLを使わなければなりません。
HTTP Method
GET/POST
Request
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
code | String | Y(成功) | Authorization Code Access Tokenを発行するのに使われる一回性のコード |
state | String | Y(成功) | CSRFを防止するために使うclient sideの認証値で、URLエンコーディングされている(redirect_uriパラメータで転送したstateの値) |
error | String | Y(失敗) | 失敗の時に返すエラーコード |
error_description | String | Y(失敗) | 失敗の時に返すエラー関連の説明 |
3. Access Token発行のAPI
顧客会社のSSOシステムでAuthorization Codeを検証した後、Access Tokenを発行して返します。
Request URL
WORKBOXのインフラセキュリティポリシーによって443ポートのみ使えます。制作したRequest URLはNAVERクラウドプラットフォームコンソールDevelopersのSSO設定でAccess Token Return APIに登録します。
HTTP Method
POST
Request
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
grant_type | String | Y | 認証プロセスに関する区分値で、どんな形の結果値を送信するかを明示。常に"authorization_code"という固定された文字列を使用 |
client_id | String | Y | NAVERクラウドプラットフォームコンソールDevelopersで登録したclient idの値 |
client_secret | String | Y | NAVERクラウドプラットフォームコンソールDevelopersで登録したclient secretの値 |
code | String | Y | Authorization Code |
state | String | N | CSRFを防止するために使うclient sideの認証値で、URLエンコーディングされている |
Response
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
access_token | String | Y(成功の時) | Access Token |
token_type | String | Y(成功の時) | Access Tokenのtype. "Bearer"に固定 |
expires_in | String | Y(成功の時) | Access Tokenの有効期間(秒)。アプリケーションの実際のログイン維持時間 |
error | String | Y(失敗の時) | 失敗の時に返すエラーコード |
error_description | String | Y(失敗の時) | 失敗の時に返すエラー関連の説明 |
4. ユーザー情報転送のAPI
顧客会社のSSOシステムでAccess Tokenを検証した後、ユーザーの情報を返します。
Request URL
WORKBOXのインフラセキュリティポリシーによって443ポートのみ使えます。
制作したRequest URLはNAVERクラウドプラットフォームコンソールDevelopersのSSO設定でUser info return APIに登録します。
HTTP Method
POST
Request
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
client_id | String | Y | NAVERクラウドプラットフォームコンソールDevelopersで登録したclient idの値 |
client_secret | String | Y | NAVERクラウドプラットフォームコンソールDevelopersで登録したclient secretの値client_secret |
access_token | String | Y | Access Token |
Response
属性 | タイプ | 必須 | 説明 |
---|---|---|---|
email_id | String | Y(成功の時) | 構成員のログインID(業務メール) |
error | String | Y(失敗の時) | 失敗の時に返すエラーコード |
error_description | String | Y(失敗の時) | 失敗の時に返すエラー関連の説明 |
SAMLベースのSSO
SAML(Security Assertion Markup Language) 2.0ベースのSSO動作方式と具現方法について説明します。
① WORKBOXサービスの使用
ユーザーはWORKBOXサービスを使用するためにウェブブラウザから URLにアクセスするか、WORKBOXアプリを実行します。
② SAML Requestを作成して転送(redirect)
WORKBOXにログインされていない場合、顧客会社の認証システムで SAML Requestを作成して転送します。
③ SAML Requestを検証した後(顧客会社にログインされていない場合)、ログインページを実行
顧客会社の認証システムではSAML Requestが正しいリクエストなのかを確認し、顧客会社のシステムにログインされていない場合は、ユーザーに自主制作したログインページを提供します。
④ アイディ/パスワードを入力
ユーザーは顧客会社のログインポリシーに合わせてアイディ/パスワードを入力します。
⑤ 顧客会社の認証処理の後、 SAML Responseを作成
アイディ/パスワードで顧客会社のシステムで認証処理を行った後、SAML Responseを作成します。
顧客会社のシステムにすでにログインされている場合は、ログインページの実行は省略し、SAML Responseを作成します。
SAML ResponseはWORKBOXに予め登録しておいた証明書で電子署名をしなければなりません。
⑥ SAML Responseを転送(redirect)
SAML ResponseをWORKBOXから転送したSAML RequestのACS URLに転送します。
⑦ SAML Responseを確認した後、WORKBOX認証トークンを発行
顧客会社が予め登録しておいた証明書でSAML Responseを検証し、認証およびユーザーの情報を確認した後、WORKBOX用の認証トークンを発行します。
1. SAMLウェブのログインページ
ユーザーがWORKBOXウェブサービスにログインするためにアイディ/パスワードを入力するページです。ログインページは顧客会社の要求に合わせて直接制作します。
SAML Requestを検証し、顧客会社のログインを処理した後、SAML Responseを作成してACS URLに返します。
Request URL
https://顧客会社のドメイン/顧客会社のログインページ
WORKBOXのインフラセキュリティポリシーによって80あるいは443ポートのみ使えます。
制作したRequest URLはNAVERクラウドプラットフォームコンソールDevelopersのSSO設定でWeb Login URLに登録します。
HTTP Method
GET
Request
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
SAMLRequest | String | Y | SAML 2.0 Requestの明細による文字列(Deflate + Base64でエンコーディングした値) |
RelayState | String | Y | 認証失敗の時に再度試みるURL |
2. SAML Requestの検証
SAML RequestはDeflate + Base64でエンコーディングされています。
SAML Requestの明細
<?xml version="1.0" encoding="UTF-8"?>
<saml2p:AuthnRequest
xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
AssertionConsumerServiceURL="{ACS URL}"
ID="{WORKBOX認証システムで発行するID}"
IssueInstant="{Request作成日時}"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
ProviderName="ncloudworkbox.com"
Version="2.0">
<saml2:Issuer
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">ncloudworkbox.com</saml2:Issuer>
<saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
</saml2p:AuthnRequest>
SAML Requestの各項目は次の通りです。
項目 | 説明 |
---|---|
AuthnRequest AssertionConsumerServiceURL | 略してACS URLといい、SAML Responseを転送するURLです。 |
AuthnRequest ID | WORKBOXの認証システムで発行するIDで、SAML Response作成の際に使います。 |
AuthnRequest IssueInstant | SAML Request作成日時 |
AuthnRequest ProtocolBinding | 'HTTP-POST'で送るので、SAML Responseは必ずPOST方式で転送しなければなりません。 |
AuthnRequest ProviderName | サービス提供者の名前で、'ncloudworkbox.com'に送っています。 |
Issuer | サービス提供者のコンストラクタのネームアイテムで発行するIDで、SAML Response作成の際に使います。 |
SAML Request Example
<?xml version="1.0" encoding="UTF-8"?>
<saml2p:AuthnRequest
xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
AssertionConsumerServiceURL="https://会社のID.ncloudworkbox.com/...."
ID="bemkplgpdoemkhjmncgmbcdibglpngclfombpmed"
IssueInstant="2018-02-14T03:33:49.999Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
ProviderName="ncloudworkbox.com"
Version="2.0">
<saml2:Issuer
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">ncloudworkbox.com</saml2:Issuer>
<saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
</saml2p:AuthnRequest>
3. SAML Response電子署名のための証明書の登録
SAML Responseを電子署名する際に使う証明書を登録します。WORKBOXはACS URLにSAML Responseを送信すると、その証明書を利用して有効性を検証します。
NAVERクラウドプラットフォームコンソールDevelopersのSSO設定でCertificate Fileに証明書を登録します。
SAML 2.0ベースの電子署名用の証明書を登録
ログアウト
WORKBOXログアウト
顧客会社のシステムからログアウトした後、WORKBOXからログアウトする際に使います。
ログアウトのリクエストを送信すると、WORKBOXではログインされているWORKBOXのアカウントをログアウトして転送されたredirect_uriにredirectします。
redirect_uriはwhite_urlで管理されるため、NAVERクラウドプラットフォームコンソールDevelopersのSSO設定でLogout Redirection Domainに登録しなければなりません。
Request URL
https://会社のID.ncloudworkbox.com/authn/logoutProcess
HTTP Method
GET/POST
Request
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
redirect_uri | String | Y | WORKBOXからログアウトした後、redirectするURL. URLエンコーディングされている |
Response
redirect_uriにredirectします。
顧客会社ログアウト
WORKBOXからログアウトした後、顧客会社のシステムからもログアウト処理をする際に使います。
Request URL
WORKBOXのインフラセキュリティポリシーによって443ポートのみ使えます。 制作したRequest URLはNAVERクラウドプラットフォームコンソールDevelopersのSSO設定でLogout URLに登録します。
HTTP Method
GET
Request
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
redirect_uri | String | N | 顧客会社のシステムでログアウト処理した後、redirectするredirect_uri. URLエンコーディングされている |
SSO連携完了後
SSO連携が完了すると、従来使用していた企業情報システムのログイン情報でWORKBOXへのログインが可能であり、ログイン情報の管理が便利になります。