---
name: "Lemonldap::NG::Portal::Lib::OpenIDConnect"
section: "3pm"
platform: "linux"
package: "liblemonldap-ng-portal-perl"
version: "2.21.2+ds-1+deb13u3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Lemonldap::NG::Portal::Lib::OpenIDConnect"
---

# Lemonldap::NG::Portal::Lib::OpenIDConnect(3pm)

Common OpenIDConnect functions

## NAME

Lemonldap::NG::Portal::Lib::OpenIDConnect - Common OpenIDConnect functions

## SYNOPSIS

use Lemonldap::NG::Portal::Lib::OpenIDConnect;

## DESCRIPTION

This module contains common methods for OpenIDConnect authentication and user information loading

## METHODS

### loadOPs

Load OpenID Connect Providers and JWKS data

### loadRPs

Load OpenID Connect Relying Parties

### refreshJWKSdata

Refresh JWKS data if needed

### getRP

Get Relying Party corresponding to a Client ID

### getCallbackUri

Compute callback URI

### buildAuthorizationCodeAuthnRequest

Build Authentication Request URI for Authorization Code Flow

### buildAuthorizationCodeAuthnResponse

Build Authentication Response URI for Authorization Code Flow

### buildImplicitAuthnResponse

Build Authentication Response URI for Implicit Flow

### buildHybridAuthnResponse

Build Authentication Response URI for Hybrid Flow

### getAuthorizationCodeAccessToken

Get Token response with authorization code

### checkTokenResponseValidity

Check validity of Token Response

### getUserInfo

Get UserInfo response

### decodeJSON

Convert JSON to HashRef

### newAuthorizationCode

Generate new Authorization Code session

### newAccessToken

Generate new Access Token session

### newRefreshToken

Generate new Refresh Token session

### getAuthorizationCode

Get existing Authorization Code session

### getAccessToken

Get existing Access Token session

### getRefreshToken

Get existing Refresh Token session

### getOpenIDConnectSession

Try to recover the OpenID Connect session corresponding to id and return session

### storeState

Store information in state database and return

### extractState

Extract state information into `$self`

### verifyJWTSignature

Check signature of a JWT

### verifyHash

Check value hash

### createHash

Create Hash

### returnBearerError

Return Bearer error

### getEndPointAuthenticationCredentials

Get Client ID and Client Secret

### getEndPointAccessToken

Get Access Token

### getAttributesListFromClaim

Return list of attributes authorized for a claim

### buildUserInfoResponseFromId

Return Hash of UserInfo data from session ID

### buildUserInfoResponse

Return Hash of UserInfo data from session object

### createJWT

Return JWT

### createIDToken

Return ID Token

### getFlowType

Return flow type

### getIDTokenSub

Return sub field of an ID Token

### getJWTJSONData

Return payload of a JWT as Hash ref

### key2jwks

Return JWKS representation of a key

### buildLogoutRequest

Build Logout Request URI

### buildLogoutResponse

Build Logout Response URI

### addRouteFromConf

Build a Lemonldap::NG::Common::PSGI::Router route from OIDC configuration attribute

### validatePKCEChallenge

Validate PKCE code challenge with given code challenge method

## SEE ALSO

Lemonldap::NG::Portal::AuthOpenIDConnect, Lemonldap::NG::Portal::UserDBOpenIDConnect

## AUTHORS

- LemonLDAP::NG team \<http://lemonldap-ng.org/team\>

  ## BUG REPORT

Use OW2 system to report bug or ask for features: \<https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/issues\>

## DOWNLOAD

Lemonldap::NG is available at \<https://lemonldap-ng.org/download\>

## COPYRIGHT AND LICENSE

See COPYING file for details.

This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program.  If not, see \<http://www.gnu.org/licenses/\>.
