Kony FabricのIdentity Serviceの紹介

#目次
1.概要
2.Identity Serviceの利点
3.Identity Serviceのワークフロー
4.サポートされているIDプロバイダー
5.Identity Serviceの構成
6. 既存のIDサービスを利用する手順
7. セッションタイムアウトの設定手順とHTTPメッセージ本文の整合性チェック手順
8. 多要素認証を有効にする
9. シングルサインオン

#1.概要
・Kony FabricのIdentity Serviceは、認証レイヤーを追加することにより、アプリケーションを保護するのに役立つ。 
・アプリケーションへのアクセスが許可されているユーザーのタイプに基づいて、IDサービスを設定できる。
・会社の内部ユーザーへのアクセスを制限するには、Microsoft Active Directory認証を使用する
・より多くのユーザーへのアプリケーションのアクセスを許可するには、エンタープライズIDプロバイダー（Microsoft Active Directory、Kony SAP Gateway、Open LDAP、OAuth 2.0、Salesforce、Custom Identity Service、SAML、Siteminder）およびソーシャルIDプロバイダー（Google、Linkedin 、Instagram、Amazon、Microsoft、Yahoo、BOX、Facebook）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/8120088d-60cf-fa87-a212-1a92240659cc.png)


##2.Identity Serviceの利点
・Kony FabricのIdentity Serviceユーザーインターフェースにより、アプリへのバックエンド認証メカニズムのコーディングが不要となる
・全ての認証トークンの処理は、アプリをより安全にするためKony Fabricレイヤーで行われる

##3.Identity Serviceのワークフロー
次のワークフローはIDサービスの様々な段階を説明している
![図79.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/a47c4128-ccae-4803-1529-bacb4bf5e19d.png)



##4. サポートされているIDプロパイダー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/a1cc516a-06f8-5efc-6cbb-7776c9190b05.png)

##5. Identity Serviceの構成
アプリケーションを作成した後、「Configure Services」タブで、「Identity service」タブが選択されていない場合はクリックする。
・「Identity」ページで、「Configure New」をクリックしてIDサービスを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/6836f16c-3de9-2ade-1259-e6aac3abac64.png)
・IDサービスデザイナーが表示される
・「Type of Identity」からIDプロパイダーを選択しサービスを構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/06859adc-1032-cafa-dace-f5b2914bb12b.png)

##6. 既存のIDサービスを利用する手順
**既存のIDサービスの使用方法**
既存のIdentityサービスを使用できる。 既存のサービスから一度に複数のサービスを追加できる。
1.「Identity」ページで、「USE EXISTING」をクリックする。 
![スクリーンショット 2020-03-12 19.24.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/4d603e4c-5dc1-ff5c-dc4e-cfb9a7a98ece.png)
既存のサービスのリストを含む「Existing Services」ダイアログが表示される。 サービスはアプリに追加（リンク）され、
アプリの「Identity」ページで利用できる。 
注：「Existing Services」には、同じ親アカウント内で作成されたサービスのリストが含まれている。
2.目的のサービスのチェックボックスを選択する。 複数のサービスを追加または複製する場合は、既存のサービスから必要なもののチェックボックスを選択する。![スクリーンショット 2020-03-12 19.26.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/4f66755d-7de1-4ee5-f638-a29e165de9c2.png)
3.「ADD」ボタンをクリックして、既存のサービスを接続する。 
もしこのサービスに変更があった場合、変更内容はこのサービスを利用しているすべてのアプリに影響します。
各アプリで異なる処理をする場合は注意して利用してください。
4.サービスが正常に追加されたら、「CLOSE」をクリックして終了してください。
![スクリーンショット 2020-03-12 19.31.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/634fc445-8775-1298-61ef-82401fa84c9a.png)


**複数の既存IDサービスを操作する方法**
Identityリストページから1つ以上の既存のIDサービスをリンク解除または削除できる。
複数の既存のIDサービスをリンク解除または削除するには、次の手順を実行する
1.「Identity」タブに移動すると、既存のサービスが一覧で表示される。
各サービスにチェックボックスが用意されており、何もしない状態では各サービスのチェックボックスはブランクになっている。
2.サービスの1つ以上のチェックボックスを選択する。 選択したサービスのクイックアクセスバーが表示され、UnlinkやDeleteなどのアクションが含まれる。
![スクリーンショット 2020-03-12 19.31.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/f7da74bd-e809-ee07-f31f-747563367611.png)

|機能名  |機能詳細  |
|---|---|
|Unlink|アプリの「Identity」タブからサービスを削除できる。 サービスのリンクが解除されると、特定のアプリとの関連付けが解除される。※リンクされていないサービスを使用する場合は、「Existing Identity Service」ダイアログからサービスを選択する。|
|Delete|サービスを削除できる。※サービスが公開されたアプリの一部である場合、公開されたすべてのアプリからサービスのリンクを解除した後にのみ、そのサービスを削除  できる。|
|Clear All|選択をクリアできる。|

**個々の既存IDサービスを操作する方法**
既存のサービスで様々なアクションを実行するには、コンテキストメニューをクリックする
![スクリーンショット 2020-03-12 19.34.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/7d0d7ebb-f1b2-4ae4-6c05-b46363a7bb58.png)

3.処理を行いたいボタンをクリックする。

コンテキストメニューには、次のオプションが含まれている。

|機能名  |機能詳細  |
|---|---|
|Edit|サービスを編集できる。 サービスを編集したら、変更を適用するために、そのサービスを使用しているすべてのアプリを再公開する必要がある。※アプリの公開の詳細については、「アプリの公開」を参照してください。|
|Enable SSO|モバイルアプリとIdentity Serviceを使用する他のアプリの間でSSOを有効にすることができる。 新しい設定を有効にするには、アプリを再公開する必要がある。 アプリが複数のIdentity Serviceを使用する場合、アプリにリンクされているすべてのIdentity Serviceに対してSSOを有効にする必要がある。 アプリケーションのSSOの詳細については、「Application SSO (https://docs.kony.com/konylibrary/konyfabric/kony_fabric_user_guide/Content/Overview_AppSSO.HTM#AppSSOoverview)」を参照してください。  |
|Sample Code|動的コードは、サービスの構成に基づいて生成される。 SDKでこのコードを使用できる。  |
|Delete|サービスを削除できる。※サービスが公開されたアプリの一部である場合、公開されたすべてのアプリからサービスのリンクを解除した後にのみ、そのサービスを削除できる。|
|Clone|既存のIDサービスを複製できる。 ※Kony Fabric V8 SP3以降、「Clone」をクリックすると、システムで生成された新しい名前が、複製されたIDサービスに対してリストに表示される。 画面上の別の場所をクリックするまで、新しい名前は編集モードのままになる。 必要に応じて、名前を変更できる。複製されたIDサービスに加えられた変更は、元のサービスには影響しない。|
|Export|Identity Serviceをローカルシステムにエクスポートできる。 エクスポートされたファイルは「.zip」ファイルである。 「API Management> Identity」でアプリにサービスパッケージをインポートできる。  |
|Unlink|アプリの「Identity」タブからサービスを削除できる。 サービスのリンクが解除されると、特定のアプリとの関連付けが解除される。 |

##7. セッションタイムアウトの設定手順とHTTPメッセージ本文の整合性チェック手順
アプリIDセッションのセッションタイムアウト（アイドルタイムアウトと固定タイムアウト）の設定を行うことができる。
またアプリケーションのHTTPメッセージ本文の整合性チェックの有効化もサポートする。
次の手順では、セッションタイムアウトとクライアントアプリのセキュリティを構成する方法について説明する。

**アプリのセッション設定の構成方法**

|機能名  |機能詳細  |
|---|---|
|Idle Timeout|自動的にアプリを終了するまで、セッションはアイドル状態のままになる分数を指定する。|
|Identity Session Idle Timeout|デバイス上のアプリセッションが一定期間にアイドル状態のままになると、アプリセッションは自動的に期限切れになる。 ユーザーはアプリに再度ログインする必要がある。|
|Maximum Session Duration|最大セッション期間が満たされるまで、アプリのログインセッションがアクティブになる。|
|Fixed Timeout|アプリのセッションのアイドルタイムアウト（HH:SS）を指定する。 タイムアウトに達すると、セッションは自動的に期限切れになり、ユーザーはアプリに再度ログインする必要がある|

「Identity Session Idle Timeout」を設定するには、次の手順を実行する。
1.「Apps」でアプリをクリックし、「Identity」タブで「SERVICE CONFIGURATION」ボタンをクリックする。
![スクリーンショット 2020-03-12 19.39.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/ae523d36-9dc9-7f4a-7cd9-1e623b1c6dc5.png)

2.「Identity Session Timeout」または「Fixed Timeout」を選択する。
3.
【「Identity Session Timeout」を選択した場合】
1.「Identity Session Idle Timeout」に時間/秒（HH:SS）を入力する。
2.「Maximum Session Duration」に時間/秒（HH:SS）を入力する。
![スクリーンショット 2020-03-12 19.40.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/23d57561-3a44-d505-875c-1438e279ad1c.png)
【「Fixed Timeout」を選択した場合】
「Fixed Identity Session Duration」に時間/秒（HH:SS）を入力する。
![スクリーンショット 2020-03-12 19.44.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/650c6a10-ccad-f8e6-9842-7a60a97062d1.png)
4.「Save」をクリックする。
5.アプリを公開または再公開して、変更を反映する。

**HTTPメッセージ本文の整合性を有効にする方法**
・クライアントアプリケーションセキュリティ機能は、クライアントアプリとサーバーアプリの間で交換されるデータを保護するのに役立つ。   
・ エンタープライズクラスのアプリケーションでは、サーバーとクライアントアプリ間で交換されるネットワークトラフィックが改ざんされないようにする必要がある。 
・この機能は、サーバーとクライアントアプリ間で交換されるデータに改ざんするネットワークトラフィックを検出して報告する。
アプリケーションのHTTPメッセージ本文の整合性を有効にするには、次の手順を実行する
1. 「Apps」でアプリをクリックし、「Identity」タブで「SERVICE CONFIGURATION」ボタンをクリックして「Client App Security」セクションを表示する。 App Security Keyは、HTTPメッセージ本文の整合性チェックと、クライアントアプリSDKによって管理されるその他のクライアントセキュリティ機能に使用される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/9f554814-2ef0-594f-8916-51617f47e216.png)


2. App Security Keyで、デフォルトのアプリセキュリティキーを選択するか、カスタムセキュリティキーを生成できる。 アプリの秘密キーを選択するには、次の手順を実行する。

3. 
  a. App Security Keyから、App Secretを選択する。 App Secretはデフォルトで選択されている。
  b. カスタムキーを生成する場合は、「App Security Key」リストから「Custom」を選択する。
  c. カスタムセキュリティキーを入力し、「OK」をクリックする。 それ以外の場合は、「Generate Key」をクリックしてカスタムセキュリティキーを生成できる。 セキュリティキーが生成される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/785d769c-d29f-4fbc-72fe-9cc01ee2b5c4.png)

3. 「Enable HTTP Integrity Checking for this App」チェックボックスを選択する。  HTTPメッセージ本文の整合性チェックは、クライアントアプリケーションからのアウトバウンドHTTP要求に署名し、インバウンドHTTP応答の署名を検証して、クライアントアプリとバックエンドサービス間のセキュリティをさらに強化する。

4. 「SAVE」をクリックする。

##8. 多要素認証を有効にする
Kony Fabricアカウントに関連付けられたすべてのユーザープロファイルに追加のセキュリティレイヤーを許可する多要素認証（MFA）の機能を提供する。 MFAは各ユーザーが自分のプロファイルに関連付けられている予備のメールアドレスまたは電話番号を提供する必要がある。 ユーザーがログインすると、検証コードがメールまたは電話番号に送信される。ユーザーは、他のログイン資格情報にこのコードを提供する必要がある。

各ユーザーはプロファイルでMFAを個別に有効にできる。または、管理者はアカウントに関連付けられているすべてのユーザープロファイルでMFAを有効にできる。 管理者が有効にした場合、そのアカウントに関連付けられている各ユーザーは、アカウントで引き続きアクセスできるように、プロファイルでMFAを活性化にする必要がある。

**すべてのユーザーに対して多要素認証を有効にする**
すべてのユーザー用多要素認証を有効にするには、次の手順を実行する
1.左ペインから「Setting」を選択する。
![スクリーンショット 2020-03-12 19.49.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/c093a149-4395-b2f9-2739-c4b26af175d4.png)

2.Settingページの上部で、「User Authentication」 ー＞ 「Multi-Factor Authentication」を選択する。
3.「Do you require multi-factor authentication」の横にある「Yes」を選択する。

**すべてのユーザーの多要素認証を無効にする**
すべてのユーザー用多要素認証を無効にするには、次の手順を実行する
1.左ペインから「Setting」を選択する。
2.Settingページの上部で、「User Authentication」 ー＞ 「Multi-Factor Authentication」を選択する。
3.「Do you require multi-factor authentication」の横にある「No」を選択する。

**多要素認証用のユーザープロファイルを構成**
ユーザープロファイル用のMFAを有効にするには、次の手順を実行する
1.ユーザープロファイルから「Settings」選択する。
2.MFAタブを選択する。
3.仮想MFAアプリケーションで、仮想多要素認証アプリのリストを確認し、セカンダリデバイスに適切な仮想MFAがインストールされていることを確認する。
4.「Activate MFA」をクリックする。
5.「Activate MFA」で, 「Phone Number」に電話番号を入力する。
6.「Secondary Email」に予備のメールを入力し、「Send Link」をクリックする。
7.「Enter Validation Code」にメールで受け取った検証コードを入力し、「Verify」をクリックする。
8.「Next」をクリックする。
9.セカンダリデバイスがQRコードをスキャンできる場合、表示されたQRコードをスキャンし、2つの認証コードを入力して、「Activate」をクリックする。
10.デバイスがQRコードをスキャンできない場合は、「Manual Configuration」を選択する。セカンダリデバイスで、提供された秘密キーを入力し、「Activate」をクリックする。

**ユーザープロファイルでの多要素認証の無効化**
ユーザーは、ユーザープロファイル設定でMFAをいつでも無効にすることができる。
重要: 管理者がアカウントに関連付けられている全てのユーザープロファイルでMFAを有効にした場合、MFAを再度有効にしない限り、ユーザーはアカウントにアクセスできなくなる
ユーザープロファイル用のMFAを無効にするには、次の手順を実行する
1.ユーザープロファイルから「Settings」選択する。
2.「MFAタブ」を選択する。
3.「Deactivate MFA」をクリックする。
4.「Deactivate」をクリックする。

##9. シングルサインオン
シングルサインオン（SSO）は、セッションとユーザー認証プロセスです。 1組のログイン認証情報で1回ログインすることで、複数のアプリケーションにアクセスできる。
SSO機能は、同じIDサービスを使用するアプリケーションをサポートする。
例：アプリ1とアプリ2は、Google Identity Providerを使用している。 Google Identity Providerの資格情報を使用してアプリ1にサインインする場合、アプリ2にサインインする必要はなく自動的にサインインする。

【使用事例】
シングルサインオン（SSO）は、セッションとユーザー認証プロセスです。 1組のログイン認証情報で1回ログインすることで、複数のアプリケーションにアクセスできる。
SSO機能は、同じIDサービスを使用するアプリケーションをサポートする。

（例）アプリ1とアプリ2は、Google Identity Providerを使用している。 Google Identity Providerの資格情報を使用してアプリ1にサインインする場合、アプリ2にサインインする必要はなく自動的にサインインする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/d4ca1b56-7a55-8661-f95e-fc952a490527.png)

利用方法

Kony Fabric ConsoleでSSOを有効にするには、次の手順を実行します。

1. Kony Fabric Consoleにサインインします。
2. [アプリ]タブに移動し、シングルサインオン機能を有効にするアプリを開きます。
3. サービスの[ID]セクションで、必要なサービスのコンテキストメニューをクリックします。
4. オプションのリストが表示されます。リストから[SSOを有効にする]オプションを選択します。
5. SSO機能を有効にしたら、SSO機能を有効にするためにアプリを再公開します。
![スクリーンショット 2020-03-12 19.52.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/8a868d4f-9c75-e7b9-98f7-4e616769f05b.png)

##参考にしたサイト
https://docs.kony.com/konylibrary/konyfabric/kony_fabric_user_guide/Default.htm#Identity.htm