専用ログインページ設定
シングルサインオンは専用ログインページでのみ有効です。したがって、シングルサインオンを使用する前に、専用ログインページを設定する必要があります。

| パラメータ | 必須 | 説明 |
|---|---|---|
| 識別子 | システム生成 | このパラメータはシステムによって生成されます。生成されていない場合は、管理者に連絡してください。 |
| PC版専用ログインページ | システム生成 | このパラメータはシステムによって生成されます。「識別子」フィールドが生成された後、自動的にこのフィールドが生成されます。このリンクを使用してPC版専用ログインページにジャンプできます。 |
| H5版専用ログインページ | システム生成 | このパラメータはシステムによって生成されます。「識別子」フィールドが生成された後、自動的にこのフィールドが生成されます。このリンクを使用してH5版専用ログインページにジャンプできます。 |
| 名称 | オプション | 専用ログインページに表示されるシステム名 |
| LOGO | オプション | システムLOGO |
| ブラウザタブアイコン | オプション | システムのブラウザタブアイコン |
| 秘密鍵 | システム生成 | APIインターフェースなどで、この秘密鍵を使用して暗号化します。 |
| PCログインページプロモーションコンテンツ | オプション | 有効にすると、専用ログインページの左側にこのコンテンツが表示されます。 |
| PC版透かし | オプション | 有効にすると、ログイン後のPC版に透かしが表示されます。 |
| APP透かし | オプション | 有効にすると、ログイン後のPC版に透かしが表示されます。 |
表示効果は以下の通りです。

シングルサインオン設定
シングルサインオンのシナリオ説明
シングルサインオン(Single sign-on、SSO)は、複数のソフトウェアアプリケーションにおいて、ユーザーが一つのアプリケーションにログインするだけで、他のアプリケーションにもアクセスできるようにするアクセス制御です。同様に、ユーザーが一つのアプリケーションからログアウトするだけで、他のアプリケーションからもログアウトできます。
例えば、ある企業がOAシステムとServiceGoを構築し、同時にシングルサインオン制御を実装した場合、従業員がOAシステムにログインした後、すでにログイン済みのOAシステムアカウントを使用してServiceGoにログインできます。これにより、ユーザーが複数回ログインする手間を減らすことができます。
シングルサインオン導入手順
- ServiceGo管理画面にログインする
管理者権限でServiceGo管理画面にログインし、「設定-システム管理-システム設定-ログイン設定」に進み、必要に応じて「PC版シングルサインオン」または「H5版シングルサインオン」を有効にします。「PC版シングルサインオン」または「H5版シングルサインオン」の各フィールドの意味は以下の通りです。
| パラメータ | 必須 | 説明 | 例 |
|---|---|---|---|
| 有効にするか | はい | 有効にすると、使用可能になります。 | |
| 標準ログイン名 | はい | 入力すると、専用ログインページで標準ログインがこの名前で表示されます。 | ServiceGo |
| シングルサインオン名 | はい | 入力すると、専用ログインページでシングルサインオンがこの名前で表示されます。 | SSO |
| リモートログインURL | いいえ | SSOを使用する際に使用する認証センターのアドレス。このアドレスの役割は、ユーザーがServiceGo専用ログインページまたは直接専用ログインページリンクを入力してログインする際に、ページが自動的に企業がシングルサインオン制御を実装したリモートログインURL、つまりここで設定した「リモートログインURL」リンクにジャンプすることです。 | |
| リモートログアウトURL | いいえ | SSOを有効にした後、ユーザーがServiceGoからログアウトすると、画面がシステム設定の「リモートログアウトURL」ページにジャンプします。 | |
| accessKeyId | はい | システムによって自動生成されます。SSOインターフェースでこのフィールドを使用します。 | |
| 秘密鍵 | はい | システムによって自動生成されます。SSOインターフェースで、この秘密鍵を使用してJWT情報を暗号化します。「リセット」を実行するとこのフィールドの値が変更されるため、注意して操作してください。 |
- 開発者によるコード追加
リモートログインおよびログアウトのURLを設定した後、開発者はjwtプロトコルに従って開発を行う必要があります。jwtはServiceGo標準のシングルサインオンプロトコルです。Saml、Oauth、LDAP、LDFSなどの他のプロトコルはOneInto製品を通じてサポートされており、営業担当者に連絡して相談することができます。
jwtアドレスおよびパラメータ説明
- リクエスト方法:GET
- アドレス(ドメイン名は実際のドメイン名に従って記入してください):
- PC版:http://servicego.udesk.cn/backend/auth/users/{accessKeyId}
- H5版/モバイル版:http://servicego.udesk.cn/backend/auth/users/h5/{accessKeyId}
- リクエストパラメータの説明は以下の通りです。
| パラメータ名 | 必須かどうか | タイプ | パラメータ値 |
|---|---|---|---|
| accessKeyId | はい | パス | このパラメータの値は、システムで設定されたaccessKeyIdの値です。 |
| jwt | はい | リクエストパラメータ | jwtプロトコルによってエンコードされます。 |
| redirectUrl | いいえ | リクエストパラメータ | 1. このパラメータは、シングルサインオン成功後にジャンプするページリンクを制御します。空の場合はデフォルトでホームページにジャンプします。2. モバイル版シングルサインオンの場合は必須項目で、固定値:https://servicego.udesk.cn/site/static/sso-mobile.html |
| isMobile | いいえ | リクエストパラメータ | モバイル版シングルサインオンかどうか(モバイル版シングルサインオンの場合は必須、1 - はい、0 - いいえ) |
jwt内容説明
| 項目 | 値 | 説明 |
|---|---|---|
| header | {"alg":"HS256","typ":"JWT"} | これら2つのフィールドとフィールド値に固定されます。 |
| payload | {"aud":"U_SERVICE","sub":"1@test.cn"} | audの値はU_SERVICEに固定され、subはメールアドレスまたは従業員番号です。 |
| ##### サンプルコード |
Javaのサンプルコードは以下の通りです:
依存ライブラリ
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
public void jumping(HttpServletResponse response) throws IOException {
Map<String, Object> header = new HashMap<>();
header.put("alg", "HS256");
header.put("typ", "JWT");
JWTCreator.Builder builder = JWT.create().withHeader(header);
builder.withIssuedAt(new Date());
builder.withClaim("aud", "U_SERVICE");
builder.withClaim("sub", "1@test.cn");
// TODO: ここで${secret}をログイン設定の「シークレットキー」フィールドに置き換える必要があります
String token = builder.sign(Algorithm.HMAC256("${secret}"));
// TODO: ここで${appKeyId}をログイン設定の「appKeyId」フィールドに置き換える必要があります
StringBuilder url = new StringBuilder("https://servicego.udesk.cn/backend/auth/users/${appKeyId}?aud=U_SERVICE&jwt=" + token);
response.setHeader("content-type", "text/html;charset=UTF-8");
response.getWriter().print("<html><script type='text/javascript'>location.href='" + url.toString() + "';</script></html>");
}
シングルサインアウト
- リクエストメソッド:POST
- エンドポイント:/backend/auth/users/logout/{accessKeyId}?jwt={jwt}
- リクエストパラメータの説明は以下の通りです
| パラメータ名 | 必須 | タイプ | パラメータ値 |
|---|---|---|---|
| accessKeyId | 必須 | パス | このパラメータ値はシステムで設定されたaccessKeyIdの値です。取得方法はシングルサインオンを参照してください |
| jwt | 必須 | クエリパラメータ | JWTプロトコルでエンコードされた値です。サンプルコードを参照してください |
-
レスポンスパラメータ:なし
-
リクエスト例
$ curl -XPOST 'https://servicego.udesk.cn/backend/auth/users/logout/test10?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJVX1NFUlZJQ0UiLCJzdWIiOiIwMTAxIiwiaWF0IjoxNjQwNTg0NDc2fQ.CO89m7k6QNOAf864kBw1Z4gKfZYlp6zamw-PjqzX4D8' -i -H 'Content-Type: application/json' -H 'Accept: application/json'
- レスポンス例
{
"code":200,
"message":"OK",
"visible":false
}
- サンプルコード
/**
* ログアウトパラメータjwtを生成する
*
* @param emailOrjobNumber serviceGoアカウント:メールアドレスまたは社員番号
* @param accessSecret シークレットキー、取得方法:シングルサインオンシークレットキー
* @return jwt
*/
private String genJwt(String emailOrjobNumber, String accessSecret) {
Map<String, Object> header = new HashMap<>();
header.put("alg", "HS256");
header.put("type", "JWT");
JWTCreator.Builder builder = JWT.create().withHeader(header);
builder.withIssuedAt(new Date());
builder.withClaim("aud", "U_SERVICE");
builder.withClaim("sub", emailOrjobNumber);
return builder.sign(Algorithm.HMAC256(accessSecret));
}