Cantara / Whydah

Top-level repository for the Whydah components

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Whydah SSO and IAM Solution

Whydah is an Identity and Single Sign-On solution. Whydah that provides user and application management, advanced role-based access control and flexible integration's.

This is the top-level repository for the Whydah components.

For status of the different modules

Fork me on GitHub

Documentation

Release log

Build status

Whydah Core/Main modules
Whydah SDKs and Libraries
Whydah extensions
Whydah Example app and integration examples

Quick set-up (Using Docker on local machine)

Install docker
wget -qO- https://get.docker.com/ | sh
Start Whydah
sudo docker pull whydah/whydah-all-in-one-image
sudo docker run -it -p 80:9999 -p 9990:9990 -p 9992:9992 -p 9995:9995 -p 9996:9996 -p 9997:9997 -p 9998:9998  whydah/whydah-all-in-one-image 

Start Whydah
## Start and debug whydah
sudo docker run -it -p 80:9999 -p 9990:9990 -p 9992:9992 -p 9995:9995 -p 9996:9996 -p 9997:9997 -p 9998:9998  whydah/whydah-all-in-one-image /bin/bash
# run ./start_whydah.sh in image
Startus of local Whydah
wget -qO- http://localhost:9998/tokenservice/health
wget -qO- http://localhost:9997/sso/health
wget -qO- http://localhost:9992/useradminservice/health
wget -qO- http://localhost:9996/useradmin/health
Run whydah in early Java9?
sudo docker pull whydah/java9-whydah-all-in-one
sudo docker run -it -p 80:9999 -p 9990:9990 -p 9992:9992 -p 9995:9995 -p 9996:9996 -p 9997:9997 -p 9998:9998  whydah/java9-whydah-all-in-one 

Some ready-built docker images

Some client code examples

Example code, Whydah Java SDK with automatic session management threads
WhydahApplicationSession applicationSession = new WhydahApplicationSssion(stsURL, appCtedential);
WhydahUserSession uSession = new WhydahUserSession(applicationSession,userCredential);
if (userSession.hasRole("MyAppRole"){
  // do admin privilege operation
}
Example RAW HTTP(S) using Apache HTTP Components Fluent API and jOOX Fluent API
//  Execute a POST to authenticate my application
String applicationTokenXMlString = Request.Post("https://sso.whydah.net/sso/logon")
        .bodyForm(Form.form().add("applicationcredential", myAppCred).build())
        .execute().returnContent().asBytes();

//  authenticate with username and password (UserCredential)
String userTokenXMlString = Request.Post("https://sso.whydah.net/sso/user/"+appTokenID+"/"+"/usertoken/")
        .bodyForm(Form.form().add("apptoken", aToken)
        .add("usercredential", new UserCredential(username,password).toXML()).build())
        .execute().returnContent().asBytes();


// That's all you need to get a full user database, IAM/SSO, Facebook/OAUTH support ++
boolean hasEmployeeRoleInMyApp = $(usertoken)
        .xpath("/usertoken/application[@ID="+myApplicationId+"]/role[@name=\"Employee\"");

Sequence Diagram

Architectural Overview

Infrastructure setup components

We plan to build a software-defined network application to control and handle various configuration of Whydah production setups. As they are developed they will arrive and be listed and documented here.

Whydah node configurations

To make it easy to adopt and evolve Whydah components, we'll make ready-to use Docker containers of all the Whydah modules, both as Docker images and the corresponding Dockerfile-configurations to make it easy to just grab a complete component or adjust and build your own.

Docker: UIB configurations
Docker configurations

Ansible: Ansible Whydah provisioning

For those who prefer using Ansible to provision solutions, we suggest that you fork our general ansible provisioning repository on github and adjust it according to youur needs

About

Top-level repository for the Whydah components

License:Apache License 2.0


Languages

Language:JavaScript 85.9%Language:Dockerfile 9.1%Language:Shell 5.0%Language:HTML 0.1%