Skip to content

Latest commit

 

History

History
99 lines (82 loc) · 2.89 KB

README.MD

File metadata and controls

99 lines (82 loc) · 2.89 KB

Implementing Slim framework 3.9 with Oauth 2.0

To Install this tutorial follow below steps

  1. Clone this project and by going into folder, run "composer install"
  2. Create a mysql database named "oauth" and import below sql scheme
CREATE TABLE oauth_clients (
  client_id             VARCHAR(80)   NOT NULL,
  client_secret         VARCHAR(80),
  redirect_uri          VARCHAR(2000),
  grant_types           VARCHAR(80),
  scope                 VARCHAR(4000),
  user_id               VARCHAR(80),
  PRIMARY KEY (client_id)
);

CREATE TABLE oauth_access_tokens (
  access_token         VARCHAR(40)    NOT NULL,
  client_id            VARCHAR(80)    NOT NULL,
  user_id              VARCHAR(80),
  expires              TIMESTAMP      NOT NULL,
  scope                VARCHAR(4000),
  PRIMARY KEY (access_token)
);

CREATE TABLE oauth_authorization_codes (
  authorization_code  VARCHAR(40)     NOT NULL,
  client_id           VARCHAR(80)     NOT NULL,
  user_id             VARCHAR(80),
  redirect_uri        VARCHAR(2000),
  expires             TIMESTAMP       NOT NULL,
  scope               VARCHAR(4000),
  id_token            VARCHAR(1000),
  PRIMARY KEY (authorization_code)
);

CREATE TABLE oauth_refresh_tokens (
  refresh_token       VARCHAR(40)     NOT NULL,
  client_id           VARCHAR(80)     NOT NULL,
  user_id             VARCHAR(80),
  expires             TIMESTAMP       NOT NULL,
  scope               VARCHAR(4000),
  PRIMARY KEY (refresh_token)
);

CREATE TABLE oauth_users (
  username            VARCHAR(80),
  password            VARCHAR(80),
  first_name          VARCHAR(80),
  last_name           VARCHAR(80),
  email               VARCHAR(80),
  email_verified      BOOLEAN,
  scope               VARCHAR(4000),
  PRIMARY KEY (username)
);

CREATE TABLE oauth_scopes (
  scope               VARCHAR(80)     NOT NULL,
  is_default          BOOLEAN,
  PRIMARY KEY (scope)
);

CREATE TABLE oauth_jwt (
  client_id           VARCHAR(80)     NOT NULL,
  subject             VARCHAR(80),
  public_key          VARCHAR(2000)   NOT NULL
);

INSERT INTO oauth_clients (client_id, client_secret, redirect_uri) VALUES ("testclient", "testpass", "https://chavakula.com/app");
  1. Change credentials in index.php for mysql connection.
  2. Hurray! we are done, start testing our simple yet powerful OAuth 2.0 implementation in slim framework.

Test implementation

Generate Token

curl -u testclient:testpass http://beast.local/slim-framework-oauth2/generateToken -d 'grant_type=client_credentials'

Result:

{"access_token":"aca1zco190311329bdf6c777d4dfae9c0d3b3c35","expires_in":3600,"token_type":"bearer","scope":null}

Validate Token generated above

curl http://beast.local/slim-framework-oauth2/validateToken -d 'access_token=aca1zco190311329bdf6c777d4dfae9c0d3b3c35'

Result:

{"success":true,"message":"Aaila! You have a valid Oauth2.0 Token"}

Cheers!