Giter VIP home page Giter VIP logo

simplesamlphp-module-oauth2's Introduction

SimpleSAMLphp OAuth2 module

What is new?

From versions 1.2.x and 2.2.x this modules supports diferents AuthSources by client, instead one for all. If you come from versions <1.2 and <2.2 you must update the schema. Please, see the "Create or update the schema" section.

Installation

This package add support for the OAuth2 protocol through a SimpleSAMLphp module installable through Composer. Installation can be as easy as executing:

composer.phar require sgomez/simplesamlphp-module-oauth2 1.0.0 # for SSP < 1.14
composer.phar require sgomez/simplesamlphp-module-oauth2 ~1.0 # for SSP >= 1.14
composer.phar require sgomez/simplesamlphp-module-oauth2 ~2.0 # for SSP >= 2.0|master

Configuration

This module requires sgomez/simplesamlphp-module-dbal module configured. It's installed as a dependency but you need to read the module info and configure it.

Create or update the schema

You need to run this to create the schema using the DBAL store module:

bash$ vendor/bin/dbalschema

Configure the module

Copy the template file to the config directory:

cp modules/oauth2/config-template/module_oauth2.php config/

and edit it. The options are self explained.

Create oauth2 clients

To add and remove Oauth2 clients, you need to logon on simplesaml with an admin account. Open the Federation tab and you will see the OAuth2 Client Registry option.

You can specify as many redirect address as you want.

Using the module

This module is based on Oauth2 Server from the PHP League and supports implicit and explicit tokens.

Create the oauth2 keys:

The oauth2 library used generates Json Web Tokens to create the Access Tokens, so you need to create a public and private cert keys:

To generate the private key run this command on the terminal:

openssl genrsa -out cert/oauth2_module.pem 1024

If you want to provide a passphrase for your private key run this command instead:

openssl genrsa -passout pass:_passphrase_ -out cert/oauth2_module.pem 1024

then extract the public key from the private key:

openssl rsa -in cert/oauth2_module.pem -pubout -out cert/oauth2_module.crt

or use your passphrase if provided on private key generation:

openssl rsa -in cert/oauth2_module.pem -passin pass:_passphrase_ -pubout -out cert/oauth2_module.crt

If you use a passphrase remember to configure it in the module_oauth2.php config file.

Explicit Token

To ask an explicit token see the Authorization Code Grant help page to know the parameters than you need to send (see Part One).

The address to the authorization server is: {{baseurlpath}}/module.php/oauth2/authorize.php

Now you need to ask for an access token. See the Part Two.

The address to the access token server is: {{baseurlpath}}/module.php/oauth2/access_token.php

Implicit Token

To ask an implicit token see the Implicit Grant help page to know the parameters than you need to send.

The address to the authorization server is: {{baseurlpath}}/module.php/oauth2/authorize.php

Take the attributes

To recover the user attributes you need to send and Authorization header with the Access Token as a Bearer Token to the userinfo page: {{baseurlpath}}/module.php/oauth2/userinfo.php

Example:

curl --request GET \
  --url http://server.com/simplesaml/module.php/oauth2/userinfo.php \
  --header 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1Ni...'

simplesamlphp-module-oauth2's People

Contributors

sgomez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

simplesamlphp-module-oauth2's Issues

Documentation

Maybe there are plans for including a short description of how this module works?

Support for JWT

Does you're module (or are their plans to) support JSON Web Tokens as an authentication method?

Endless Redirect with 1.0 Version

Dear Gomez,

I installed the ~1.0 branch as described in the Readme at an 1.14.14 Version of SimpleSAML. After creating the database which apparantly worked out (SQLite Database file is present) its stated to configure the module on the Federation Tab. When I try to do this I get redirected so often, that the browser stops the process.
In the Serverlog I see the following for access_log
accesslog
In error_log is nothing.
Where to start trying to debug this? I created the certs as stated and the config file I tried admin and default-sp as authentication source, both with the same result.
Before installing the plugin I could log in and out without troubles.

Regards Martin

Fatal error: Cannot redeclare class SimpleSAML_Module

Commit #1329f63f3b1a6580c10e99924bc7ae5c327f8235
hooks/hook_frontpage.php:12
'href' => SimpleSAML\Module::getModuleURL('oauth2/registry.php'),

Seems to be leading to: PHP Fatal error: Cannot redeclare class SimpleSAML_Module in Module.php.

Changing this back fixes the issue.
'href' => SimpleSAML_Module::getModuleURL('oauth2/registry.php'),

Private informations in exception

Hello,

Using print_r($e); in exception handling is a security problem, since the whole world can read it, and access private information in calls parameters.

You should use the integrated error reporter of simplesamlphp, which is pretty good at logging, or if you really need to display such stuff in your module, you should only do this if DEBUG is TRUE in global configuration.

It is present in those files:
https://github.com/sgomez/simplesamlphp-module-oauth2/blob/master/www/access_token.php
https://github.com/sgomez/simplesamlphp-module-oauth2/blob/master/www/authorize.php
https://github.com/sgomez/simplesamlphp-module-oauth2/blob/master/www/userinfo.php

Module not save attributes in the database

Hi @sgomez

I cant get the attributes configured in the config file, the module not save this info in the "attributes" in the database and my SP app can't receive this in the userinfo.php response. I use LDAP auth source.

Creating clients with SSP 1.18

Hello,

I successfully installed and configured the module and DBAL.

My deployment by default uses the new Twig UI.

Issue 1: the "Create client" link is not displayed when using the new admin module in Twig. It is shown when disabling new UI.

Issue 2: on old UI, upon clicking the Create client link, an error is thrown:

Caused by: Exception: Template: Could not find template file [oauth2:registry_list] at [/...baseurl/modules/oauth2/templates/registry_list]
Backtrace:
4 lib/SimpleSAML/XHTML/Template.php:639 (SimpleSAML\XHTML\Template::findTemplatePath)
3 lib/SimpleSAML/XHTML/Template.php:545 (SimpleSAML\XHTML\Template::show)
2 modules/oauth2/www/registry.php:39 (require)
1 lib/SimpleSAML/Module.php:254 (SimpleSAML\Module::process)

Looking at this templates directory, I find exclusively .twig files:

$ ls
registry_edit.twig registry_list.twig registry_new.twig

But twig templates only come into play when using new UI. In which I don't get to click the link that takes me there...

What am I missing here?

Question: Service Provider?

Hello,

Can this be used on the SP side of SimpleSAMLPHP or is it restricted to being used on the IDP side?

-- Anthony

existing simplesamlphp 1.14.14 installation @ /var/simplesamlphp

Hi,

when i try to install the module via composer (composer.phar require sgomez/simplesamlphp-module-oauth2 ~1.0) a new instance/installation of simplesamlphp is created @ /home/username/vendor/simplesamlphp/simplesamlphp

Is there an option to install the module to an existing simplesaml installation resp. to a different path?

Many thanks,
Martin

Twig module not installed

Twig is not mentioned in the README, nor does it install with composer. I'm assuming it needs to be added in one of those two places.
However, once installed with composer, it does not seem to load the files OOTB.

Caused by: Exception: Template: Could not find template file [oauth2:registry_list] at [/srv/simplesamlphp/modules/oauth2/templates/registry_list]
Backtrace:
3 /srv/simplesamlphp/lib/SimpleSAML/XHTML/Template.php:659 (SimpleSAML_XHTML_Template::findTemplatePath)
2 /srv/simplesamlphp/lib/SimpleSAML/XHTML/Template.php:576 (SimpleSAML_XHTML_Template::show)
1 /srv/simplesamlphp/modules/oauth2/www/registry.php:39 (require)
0 /srv/simplesamlphp/www/module.php:137 (N/A)

get new access_token using refresh token

Hi
I've started using this module, it just works.

Using grant_type of code to generate new access_token, returns refresh_token also. I tried to get new access_token using grant_type of refresh_token with the same endpoint, but response was "unsupported_grant_type".

My question is how to use refresh_token to generate new access_token. Is it even possible? If yes, how to do it, what is endpoint and which parameters should I use?

userinfo stoped working

Hi.
Today I tried to login, but had some problem. After some debugging, realised problem is 'simplesaml/module.php/oauth2/userinfo.php' endpoint. It was working perfect yesterday.

I tried to test using postman, it returns error displayed in the image:

pasted_image_14_07_2017__16_08

How to get work with Globus Auth

First, I might be going about this all wrong, if I am please feel free to say so and close this issue.

I currently use simpleSAMLPHP in my application and we want to use globus auth (https://docs.globus.org/api/auth/)

I was wondering if you could give me any guidance on how to set this up.

I am able to get simplesamlphp installed and setup with this module, but am uncertain on how to actually setup the authsource to be able to use globus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.