Difference between revisions of "WISE-PaaS/Single Sign-On(SSO)"

From ESS-WIKI
Jump to: navigation, search
 
(110 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<font color="#000000">WISE-PaaS/OTA is part of Advantech WISE-PaaS cloud solution and focuses on remote software update.&nbsp;&nbsp;It provides one-stop updates for application, patch, firmware, driver and BSP.</font>
+
== Introduction ==
  
<font color="#000000">WISE-PaaS/OTA utilizes standard IoT protocol, like MQTT from IBM, to communicate with IPC or IoT gateway, and provides OTA&nbsp;agent which supports multiplatform, such as Windows 7/8/10, CentOS6.5, Yocto x86 and Yocto&nbsp;RISC&nbsp;etc </font><font color="#000000">to deploy the update pack. Moreover, WISE-PaaS/OTA offers RESTful API web service which allows user to integrate OTA functions with other application.</font>
+
<font color="#000000">Single Sign-On (SSO) is part of Advantech WISE-PaaS cloud solution and &nbsp;</font>plays an important role in the interoperability of Internet identity<font color="#000000">.</font>&nbsp;It provides a central login&nbsp;mechanism.
  
 +
WISE-PaaS/Single Sign-On<font color="#000000">&nbsp;utilizes Keycloak which is&nbsp;an open source identity and access management for modern applications and services.&nbsp;No need to deal with storing users or authenticating users. It's all available out of the box.</font>
  
 +
== API Protocol Flow ==
  
== Features Overview ==
+
The following is a basic standard workflow. It presents the key concept of Singn-On between each other.
  
Console-Server-Agent structure, where the server can be built in a public or private cloud
+
[[File:OAuth abstract flow.png|RTENOTITLE]]
  
Centralized remote software update system which supports application, patch, firmware, driver, BSP and updates
+
*User/Resource owner&nbsp;:&nbsp;Who authorizes others to access Protected Resource. If the role is human, it means the end-user.
 +
*Application/Client/Browser&nbsp;: An application ,client or a browser page represents the Resource Owner to access the Protected Resource.
 +
*Authorize Server&nbsp;:&nbsp;The server issues the Access Token after user are authenticated. (WISE-PaaS/Single Sign-On server)
 +
*Resource Server&nbsp;:&nbsp;The server hosting Protected Resource&nbsp;accept requests according to Access Token.
  
Encrypted protection for update package content
+
Here is a more detailed explanation of the steps in the diagram:
  
TLS/SSL enabled for all data connection security
+
#The&nbsp;''application''&nbsp;requests authorization to access service resources from the&nbsp;''user''
 +
#If the&nbsp;''user''&nbsp;authorized the request, the&nbsp;''application''&nbsp;receives an authorization grant
 +
#The&nbsp;''application''&nbsp;requests an access token from the&nbsp;''authorization server''&nbsp;(API) by presenting authentication of its own identity, and the authorization grant
 +
#If the application identity is authenticated and the authorization grant is valid, the&nbsp;''authorization server''&nbsp;(API) issues an access token to the application. Authorization is complete.
 +
#The&nbsp;''application''&nbsp;requests the resource from the&nbsp;''resource server''&nbsp;(API) and presents the access token for authentication
 +
#If the access token is valid, the&nbsp;''resource server''&nbsp;(API) serves the resource to the&nbsp;''application''
  
Supports exception rollback for remote deploy
+
Another more detailed flow chart:
  
Supports automatic and scheduled update mode
+
[[File:Figure 1.png|RTENOTITLE]]
  
On-premise local storage (ftp) and pubic cloud storage (baidu, azure, ali)
+
== Features Overview ==
 
 
Up to 1000 device management and supports max. 50 devices update simultaneously
 
 
 
Supports cross-platform such as Windows and Linux
 
 
 
Open Interface – Web Services(RESTful API)
 
 
 
== Feature Details ==
 
 
 
=== Supports Private or Public Cloud Architecture ===
 
 
 
''WISE-PaaS/OTA is a 100% web based application, which can be built in public or private cloud. It makes the user to update the software easily.''
 
 
 
=== Device and Software Status Management ===
 
 
 
''Connected with devices using MQTT protocol and monitoring the software status or information such as software version timely.''
 
 
 
=== Automatic and Scheduling Update Mode ===
 
 
 
''WISE-PaaS/OTA supports two different update modes: automatic update from server side and scheduling update which actives from the agent side. Scheduling can help users avoid the peak time of network traffic effectively, offering reasonable download and deployment arrangements, which can reduce the losses from software updates.''
 
 
 
=== Storage Management ===
 
 
 
''WISE-PaaS/OTA supports opened framework which can integrate 3<sup>rd</sup> party storage easily, such as, local storage FTP or public storage baiduyun, azure etc. This framework can manage multi-storage which supports up to 50 devices to update simultaneously.''
 
 
 
=== Package Management ===
 
  
''Multi-layer OTA package management supported. Not only realize automatic programming versions update, WISE-PaaS/OTA can also make sure your on-site version control will be always the latest. However, it can also be applied the old version if you’d need to.''
+
WISE-PaaS/Single Sign-On(SSO) which base on keycloak has the following features.
  
=== Security Protection ===
+
*Single-Sign On&nbsp;:&nbsp;Login once to multiple applications
  
''TLS/SSL enabled for all data connection security includes user account, device connection, upload and download package. Moreover, it uses the DES encrypted to protect the upgrade packages and can roll back to older version when exception happens.''
+
*Standard Protocols&nbsp;:&nbsp;OpenID Connect, OAuth 2.0 and SAML 2.0
  
=== Event & Notification ===
+
*Centralized Management&nbsp;:&nbsp;For admins and users
  
''Upon major events, prompt notifications will be sent to administrators by email.''
+
*Adapters&nbsp;:&nbsp;Secure applications and services easily
  
=== WISE-PaaS/OTA Extension ===
+
*High Performance&nbsp;:&nbsp;Lightweight, fast and scalable
  
''Provide RESTful API Web Service, which allows cross-platform integration of OTA functions with other system.''
+
*Clustering&nbsp;:&nbsp;For scalability and availability
  
=== Multi-platform support ===
+
*Password Policies&nbsp;:&nbsp;Customize password policies
  
''OTA agent supports multiplatform, such as Windows 7/8 /10, CentOS6.5, Yocto x861.7.1 and Yocto RISC1.5.3 etc...''
+
== Components ==
  
== Software Specifications and Versions ==
+
WISE-PaaS/Single Sign-On server plays as a public web server and provide client adapters to make&nbsp;it really easy to secure applications.&nbsp;
  
Max. concurrent device connections''':''' 1000
+
*OpenID Connect Server&nbsp;:&nbsp;WISE-PaaS/Single Sign-On server follows standard Protocols include OpenID Connect, OAuth 2.0. and SAML 2.0, please reference server setting documents at document session.&nbsp;&nbsp;
 +
*OpenID Connect Client&nbsp;:&nbsp;WISE-PaaS/Single Sign-On server provides generic OpenID Connect, please reference sample code at document session.&nbsp;&nbsp;
 +
*OAuth 2.0 Server&nbsp;:&nbsp; WISE-PaaS/Single Sign-On server follows standard Protocols include OpenID Connect, OAuth 2.0.&nbsp;and SAML 2.0,&nbsp;please reference server setting documents at document session.&nbsp;&nbsp;
 +
*OAuth 2.0 Client&nbsp;:&nbsp;WISE-PaaS/Single Sign-On server provides generic OAuth 2.0 Client Connect, please reference sample code at document session.
  
Max. update handling''':''' 50 OTA packages, < 500M
+
== Implementation ==
  
Software Package
+
WISE-PaaS&nbsp;provides a complete service for Single Sign-On. There are tree sections for developers to implement.
  
=== [[WISE-PaaS/OTA_Server|WISE-PaaS/OTA Server]] ===
+
#'''Settings&nbsp;on'''&nbsp;'''WISE-PaaS/Single Sign-On server'''
 +
#*&nbsp;Apply a realm administrator account for WISE-PaaS/Single Sign-On server.&nbsp;Please sen a request to&nbsp;[mailto:Jonathan.Lin@advantech.com.tw WISE-PaaS/Single Sign-On service manager]&nbsp;by E-mail. And provide the following information
 +
#*#''​''Service name&nbsp;: [''RMM''] as your&nbsp;realm.
 +
#*#Client name&nbsp;: [''RMMClient''] a client definition for a app to login in.
 +
#*#User registration&nbsp;: [''True/False''] Enable/Disable user registeration.
 +
#*#Administrator account&nbsp;: [''RMMAdmin''] Use this account to manage this realm. The default password is same as account name. Change password after first login
 +
#*Setting your service on WISE-PaaS/Single Sign-On server
 +
#*#Login [https://openidserver.redirectme.net:8443/auth/admin/ WISE-PaaS Single Sign-On server]
 +
#*#Authorization Setting&nbsp;'''(Only if you want to enable authorization services. [[Media:User_Guide_Authorization_Setting.pdf|User Guide Authorization Setting&nbsp;]]&nbsp;)'''
 +
#*#*Enabled authorization on client&nbsp;setting.
 +
#*#*Create a Resource&nbsp;: Creating the resources that you want to protect.
 +
#*#*Create a Permission&nbsp;:&nbsp;A permission associates the object being protected and the policies that must be evaluated to decide whether access should be granted.
 +
#*#*Create a Role&nbsp;:&nbsp;Use this type of policy to define conditions for your permissions where a set of one or more roles is permitted to access an object.
 +
#*#*Create a User&nbsp;: Craete a login account for SSO with role mapping of client.
 +
#*#*Evaluate&nbsp;:&nbsp;When designing your policies, you can simulate authorization requests to test how your policies are being evaluated with a json format result.
 +
#*#Get Client App setting
 +
#*#*Realm Public Key&nbsp;: Get the public key from Realms setting-> [''Realm'']->Keys-> Public key.
 +
#*#*Client Credentials Secret&nbsp;: Get Secret from Clients->Credentials->Secret'''(Only if you want to enable authorization services, otherwise&nbsp;set "public-client" to&nbsp;true)'''
 +
#'''Application for end user'''
 +
#*Copy the json , html sample code to your local web site.
 +
#*Modify json setting.
 +
#*Once the test HTML page is opened, it is automatically directed to OpenID Connect Server.
 +
#*While login success, it will automatically lead back to test page with an access token.
 +
#'''Verify Access Token on Resource Server'''
 +
#*​​Decode JWT access token.
 +
#*Response to client according to user protected resources.
  
=== [[WISE-PaaS/OTA_Agent|WISE-PaaS/OTA Agent]] ===
+
== Document ==
  
*
+
*[[WISE-PaaS/Single_Sign-On(SSO)_server_setting|WISE-PaaS/Single_Sign-On(SSO)_server_setting]]
*Pages with broken file links
+
*[[Application(Client)_Sample_code_(json)|Application(Client)_Sample_code_(json)]]
 +
*[[Application(Client)_Sample_code_without_Authorization_(json)|Application(Client)_Sample_code_without_Authorization_(json)]]
 +
*[[Application(Client)_Sample_code_(HTML)|Application(Client)_Sample_code_(HTML)]]
 +
*[[Resource_Server_jwt_Sample_code|Resource_Server_jwt_Sample_code]]

Latest revision as of 10:16, 17 January 2017

Introduction

Single Sign-On (SSO) is part of Advantech WISE-PaaS cloud solution and  plays an important role in the interoperability of Internet identity. It provides a central login mechanism.

WISE-PaaS/Single Sign-On utilizes Keycloak which is an open source identity and access management for modern applications and services. No need to deal with storing users or authenticating users. It's all available out of the box.

API Protocol Flow

The following is a basic standard workflow. It presents the key concept of Singn-On between each other.

RTENOTITLE

  • User/Resource owner : Who authorizes others to access Protected Resource. If the role is human, it means the end-user.
  • Application/Client/Browser : An application ,client or a browser page represents the Resource Owner to access the Protected Resource.
  • Authorize Server : The server issues the Access Token after user are authenticated. (WISE-PaaS/Single Sign-On server)
  • Resource Server : The server hosting Protected Resource accept requests according to Access Token.

Here is a more detailed explanation of the steps in the diagram:

  1. The application requests authorization to access service resources from the user
  2. If the user authorized the request, the application receives an authorization grant
  3. The application requests an access token from the authorization server (API) by presenting authentication of its own identity, and the authorization grant
  4. If the application identity is authenticated and the authorization grant is valid, the authorization server (API) issues an access token to the application. Authorization is complete.
  5. The application requests the resource from the resource server (API) and presents the access token for authentication
  6. If the access token is valid, the resource server (API) serves the resource to the application

Another more detailed flow chart:

RTENOTITLE

Features Overview

WISE-PaaS/Single Sign-On(SSO) which base on keycloak has the following features.

  • Single-Sign On : Login once to multiple applications
  • Standard Protocols : OpenID Connect, OAuth 2.0 and SAML 2.0
  • Centralized Management : For admins and users
  • Adapters : Secure applications and services easily
  • High Performance : Lightweight, fast and scalable
  • Clustering : For scalability and availability
  • Password Policies : Customize password policies

Components

WISE-PaaS/Single Sign-On server plays as a public web server and provide client adapters to make it really easy to secure applications. 

  • OpenID Connect Server : WISE-PaaS/Single Sign-On server follows standard Protocols include OpenID Connect, OAuth 2.0. and SAML 2.0, please reference server setting documents at document session.  
  • OpenID Connect Client : WISE-PaaS/Single Sign-On server provides generic OpenID Connect, please reference sample code at document session.  
  • OAuth 2.0 Server :  WISE-PaaS/Single Sign-On server follows standard Protocols include OpenID Connect, OAuth 2.0. and SAML 2.0, please reference server setting documents at document session.  
  • OAuth 2.0 Client : WISE-PaaS/Single Sign-On server provides generic OAuth 2.0 Client Connect, please reference sample code at document session.

Implementation

WISE-PaaS provides a complete service for Single Sign-On. There are tree sections for developers to implement.

  1. Settings on WISE-PaaS/Single Sign-On server
    •  Apply a realm administrator account for WISE-PaaS/Single Sign-On server. Please sen a request to WISE-PaaS/Single Sign-On service manager by E-mail. And provide the following information
      1. Service name : [RMM] as your realm.
      2. Client name : [RMMClient] a client definition for a app to login in.
      3. User registration : [True/False] Enable/Disable user registeration.
      4. Administrator account : [RMMAdmin] Use this account to manage this realm. The default password is same as account name. Change password after first login
    • Setting your service on WISE-PaaS/Single Sign-On server
      1. Login WISE-PaaS Single Sign-On server
      2. Authorization Setting (Only if you want to enable authorization services. User Guide Authorization Setting  )
        • Enabled authorization on client setting.
        • Create a Resource : Creating the resources that you want to protect.
        • Create a Permission : A permission associates the object being protected and the policies that must be evaluated to decide whether access should be granted.
        • Create a Role : Use this type of policy to define conditions for your permissions where a set of one or more roles is permitted to access an object.
        • Create a User : Craete a login account for SSO with role mapping of client.
        • Evaluate : When designing your policies, you can simulate authorization requests to test how your policies are being evaluated with a json format result.
      3. Get Client App setting
        • Realm Public Key : Get the public key from Realms setting-> [Realm]->Keys-> Public key.
        • Client Credentials Secret : Get Secret from Clients->Credentials->Secret(Only if you want to enable authorization services, otherwise set "public-client" to true)
  2. Application for end user
    • Copy the json , html sample code to your local web site.
    • Modify json setting.
    • Once the test HTML page is opened, it is automatically directed to OpenID Connect Server.
    • While login success, it will automatically lead back to test page with an access token.
  3. Verify Access Token on Resource Server
    • ​​Decode JWT access token.
    • Response to client according to user protected resources.

Document