専用ログインページ設定

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

システム設定-基本情報

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

表示効果は以下の通りです。

シングルサインオン設定

シングルサインオンのシナリオ説明

シングルサインオン(Single sign-on、SSO)は、複数のソフトウェアアプリケーションにおいて、ユーザーが一つのアプリケーションにログインするだけで、他のアプリケーションにもアクセスできるようにするアクセス制御です。同様に、ユーザーが一つのアプリケーションからログアウトするだけで、他のアプリケーションからもログアウトできます。

例えば、ある企業がOAシステムとServiceGoを構築し、同時にシングルサインオン制御を実装した場合、従業員がOAシステムにログインした後、すでにログイン済みのOAシステムアカウントを使用してServiceGoにログインできます。これにより、ユーザーが複数回ログインする手間を減らすことができます。

シングルサインオン導入手順
  1. ServiceGo管理画面にログインする

管理者権限でServiceGo管理画面にログインし、「設定-システム管理-システム設定-ログイン設定」に進み、必要に応じて「PC版シングルサインオン」または「H5版シングルサインオン」を有効にします。「PC版シングルサインオン」または「H5版シングルサインオン」の各フィールドの意味は以下の通りです。

パラメータ 必須 説明
有効にするか はい 有効にすると、使用可能になります。
標準ログイン名 はい 入力すると、専用ログインページで標準ログインがこの名前で表示されます。 ServiceGo
シングルサインオン名 はい 入力すると、専用ログインページでシングルサインオンがこの名前で表示されます。 SSO
リモートログインURL いいえ SSOを使用する際に使用する認証センターのアドレス。このアドレスの役割は、ユーザーがServiceGo専用ログインページまたは直接専用ログインページリンクを入力してログインする際に、ページが自動的に企業がシングルサインオン制御を実装したリモートログインURL、つまりここで設定した「リモートログインURL」リンクにジャンプすることです。
リモートログアウトURL いいえ SSOを有効にした後、ユーザーがServiceGoからログアウトすると、画面がシステム設定の「リモートログアウトURL」ページにジャンプします。
accessKeyId はい システムによって自動生成されます。SSOインターフェースでこのフィールドを使用します。
秘密鍵 はい システムによって自動生成されます。SSOインターフェースで、この秘密鍵を使用してJWT情報を暗号化します。「リセット」を実行するとこのフィールドの値が変更されるため、注意して操作してください。
  1. 開発者によるコード追加

リモートログインおよびログアウトのURLを設定した後、開発者はjwtプロトコルに従って開発を行う必要があります。jwtはServiceGo標準のシングルサインオンプロトコルです。Saml、Oauth、LDAP、LDFSなどの他のプロトコルはOneInto製品を通じてサポートされており、営業担当者に連絡して相談することができます。

jwtアドレスおよびパラメータ説明

パラメータ名 必須かどうか タイプ パラメータ値
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>");
}

シングルサインアウト

パラメータ名 必須 タイプ パラメータ値
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));
    }