PHPackages                             d2d3/openid-integration - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. d2d3/openid-integration

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

d2d3/openid-integration
=======================

Package supports OpenId integration

0368PHP

Since Dec 25Pushed 1y agoCompare

[ Source](https://github.com/D2D3-COM/d2d3-openid-integration)[ Packagist](https://packagist.org/packages/d2d3/openid-integration)[ RSS](/packages/d2d3-openid-integration/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Idea
----

[](#idea)

```
* I will call the Login system OpenID System (OID)
* Dependent projects that want to use login from OID are Relying Party (RP)

1. OID:
- Provide login and registration forms for applications (App).
- Manage RPs, where each RP needs to register with OID the following information:
     + client_id: application identification.
     + client_secret: secret key to authenticate RP with OID.
     + redirect_uri: the path OID will send response after authentication is complete.

- After registration, each RP receives 3 links:
     + GET Login link: RP will redirect users to this path to log in.
     + POST API to get user information: RP sends AUTH_CODE to get user information.
     + POST API migrate user: RP can transfer user information to OID.
- OID will return the env variables that need to be added to RP's .env

2. RP login:
- When the user enters the RP's login page, RP will redirect to the login link from OID.
- The user logs in with username/password, then OID will return the AUTH_CODE via redirect_uri.
- redirect_uri will receive the AUTH_CODE and send it to the /userInfo endpoint with {client_secret}
to get user information
- RP will create a new user if there is no user corresponding to this email in the RP system
```

We need 7 steps for integration OpenId in your app
--------------------------------------------------

[](#we-need-7-steps-for-integration-openid-in-your-app)

**Step 1: Register app in OpenId**
**Redirect URI** This URL is used to get the **authorization\_code** from OpenId. Normally, I would use the login URL to handle that too. [![image](https://private-user-images.githubusercontent.com/33920516/383814129-5bd06551-bd34-473b-8086-7c36c2ea63ac.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4MTQxMjktNWJkMDY1NTEtYmQzNC00NzNiLTgwODYtN2MzNmMyZWE2M2FjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJhYTZhNjRjYmM0NzBmZjliNmZhNWJjZjliMGMyNjAyMzkwNjJlZjdlYzUwYjkwMDJmZjc4ZjE5MjFkZWI4M2QmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.-mqL585jmI8ffA_LtgHnJoaDK4Fu7A7GVNpR_JFW4GI)](https://private-user-images.githubusercontent.com/33920516/383814129-5bd06551-bd34-473b-8086-7c36c2ea63ac.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4MTQxMjktNWJkMDY1NTEtYmQzNC00NzNiLTgwODYtN2MzNmMyZWE2M2FjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJhYTZhNjRjYmM0NzBmZjliNmZhNWJjZjliMGMyNjAyMzkwNjJlZjdlYzUwYjkwMDJmZjc4ZjE5MjFkZWI4M2QmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.-mqL585jmI8ffA_LtgHnJoaDK4Fu7A7GVNpR_JFW4GI)

**Step 2: Copy all Environment Variables and paste to your .env** [![image](https://private-user-images.githubusercontent.com/33920516/383814230-b013815d-cb31-4ab3-a72e-61fb3ee45368.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4MTQyMzAtYjAxMzgxNWQtY2IzMS00YWIzLWE3MmUtNjFmYjNlZTQ1MzY4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFiODJhYmIzNGFhNmU4NWIwNGQyMDE4YjZhMDdmYzhmNTVmNjJiZDMyNDk2YzY0YjRmMTQyYTU2NTU4Y2Y0NDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.DF6wPVa8moGN6B1svJWFrDaDA6ujtFFKPHgeFN2IA2E)](https://private-user-images.githubusercontent.com/33920516/383814230-b013815d-cb31-4ab3-a72e-61fb3ee45368.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4MTQyMzAtYjAxMzgxNWQtY2IzMS00YWIzLWE3MmUtNjFmYjNlZTQ1MzY4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFiODJhYmIzNGFhNmU4NWIwNGQyMDE4YjZhMDdmYzhmNTVmNjJiZDMyNDk2YzY0YjRmMTQyYTU2NTU4Y2Y0NDUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.DF6wPVa8moGN6B1svJWFrDaDA6ujtFFKPHgeFN2IA2E)

**Step 3: In your App install d2d3/openid-integration pakage**

```
composer require d2d3/openid-integration
```

**Step 4: Create one route api loginWithAuthCode** [![image](https://private-user-images.githubusercontent.com/33920516/383878630-60b35d22-488e-429f-aa01-10b7158d975c.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4Nzg2MzAtNjBiMzVkMjItNDg4ZS00MjlmLWFhMDEtMTBiNzE1OGQ5NzVjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlYzY1Mzc4ZDE1MmQwZTE4YjczNmNiYjdlNzg0YjAyY2M0NzMzZjc1ZWQ0MTk0YzEyYzNhZmVmMThlMDJkNDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.esLIBS0T0xJhGgKPksbAoJNba6e4mbXpT_EY_x6p7n4)](https://private-user-images.githubusercontent.com/33920516/383878630-60b35d22-488e-429f-aa01-10b7158d975c.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4Nzg2MzAtNjBiMzVkMjItNDg4ZS00MjlmLWFhMDEtMTBiNzE1OGQ5NzVjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlYzY1Mzc4ZDE1MmQwZTE4YjczNmNiYjdlNzg0YjAyY2M0NzMzZjc1ZWQ0MTk0YzEyYzNhZmVmMThlMDJkNDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.esLIBS0T0xJhGgKPksbAoJNba6e4mbXpT_EY_x6p7n4)

**Step 5: LoginWithAuthCode**

- Use D2d3\\OpenidIntegration\\Http\\Services\\OauthService::loginWithAuthCode for get Userdata [![image](https://private-user-images.githubusercontent.com/33920516/383881380-a53a260e-1562-4a71-9f2f-9f9c1258cfd2.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4ODEzODAtYTUzYTI2MGUtMTU2Mi00YTcxLTlmMmYtOWY5YzEyNThjZmQyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVjNmU3YjY4MDAyY2VkNzM3NjQ4ZWYwMTJhZTdlYTRhMDQzMDBjYzFiZGFkZmZlNTgyN2IxZTY2OWJjNWJlYmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.6xMgVrpnaSsNOF33nqpHrqzLuXDD8IUQMQzhSrbjDWc)](https://private-user-images.githubusercontent.com/33920516/383881380-a53a260e-1562-4a71-9f2f-9f9c1258cfd2.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4ODEzODAtYTUzYTI2MGUtMTU2Mi00YTcxLTlmMmYtOWY5YzEyNThjZmQyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVjNmU3YjY4MDAyY2VkNzM3NjQ4ZWYwMTJhZTdlYTRhMDQzMDBjYzFiZGFkZmZlNTgyN2IxZTY2OWJjNWJlYmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.6xMgVrpnaSsNOF33nqpHrqzLuXDD8IUQMQzhSrbjDWc)
- Determine if the user already exists by Email. If the user does not exist, create a new one. If it exists, update based on information received from OpenId.

[![image](https://private-user-images.githubusercontent.com/33920516/384212486-da4c5928-0d67-4cbe-8552-f6fdade5bcd1.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODQyMTI0ODYtZGE0YzU5MjgtMGQ2Ny00Y2JlLTg1NTItZjZmZGFkZTViY2QxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiODdiNzA5M2M0OWFmMzU2NmVmNWE2NzNmNzcwZjI0ZjMyNjgzOTFmZDEyMTBkNWY3YTFiODY1NTcxZDRlMjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.syouV35SLaFFYsMH5mmVaBl5DY0HrRcW3ukvn_bMyh4)](https://private-user-images.githubusercontent.com/33920516/384212486-da4c5928-0d67-4cbe-8552-f6fdade5bcd1.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODQyMTI0ODYtZGE0YzU5MjgtMGQ2Ny00Y2JlLTg1NTItZjZmZGFkZTViY2QxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdiODdiNzA5M2M0OWFmMzU2NmVmNWE2NzNmNzcwZjI0ZjMyNjgzOTFmZDEyMTBkNWY3YTFiODY1NTcxZDRlMjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.syouV35SLaFFYsMH5mmVaBl5DY0HrRcW3ukvn_bMyh4)

- Finally, retrieve the user information needed to login and return it to the client. [![image](https://private-user-images.githubusercontent.com/33920516/383881588-e01acbd3-1a3b-479a-9265-4fb94878d144.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4ODE1ODgtZTAxYWNiZDMtMWEzYi00NzlhLTkyNjUtNGZiOTQ4NzhkMTQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkzZTJjMDFjN2E1NWQ4ZDA3OGNjZGM5OWY1NjliODU3OWNlOTdkNDA5NGI2YmJjYjI4ZGZlMjNiMjU5ODYyMDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.StHAeVNg4zkURx2swnef6AVdXXEGGaeg25YVSoKYhps)](https://private-user-images.githubusercontent.com/33920516/383881588-e01acbd3-1a3b-479a-9265-4fb94878d144.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4ODE1ODgtZTAxYWNiZDMtMWEzYi00NzlhLTkyNjUtNGZiOTQ4NzhkMTQ0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkzZTJjMDFjN2E1NWQ4ZDA3OGNjZGM5OWY1NjliODU3OWNlOTdkNDA5NGI2YmJjYjI4ZGZlMjNiMjU5ODYyMDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.StHAeVNg4zkURx2swnef6AVdXXEGGaeg25YVSoKYhps)

**Step 6: On the user interface side: Create one link redirect to env.VUE\_APP\_D2D3\_OID\_LOGIN\_URL** [![image](https://private-user-images.githubusercontent.com/33920516/383871755-524ee47d-8d35-4f08-b4f0-9119072ed117.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4NzE3NTUtNTI0ZWU0N2QtOGQzNS00ZjA4LWI0ZjAtOTExOTA3MmVkMTE3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE3ZjExMGY0MjM0MTRkYjA1YmE1NTQwODk4NGMyMTYwYTI0ZmVjOTE5MmQwM2JkYjMzYmZjY2VlMWVmNTRhNTkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.kb9rBwVjtUrTcaAQPXrhmp279Syt9PPdowgdIykbxyE)](https://private-user-images.githubusercontent.com/33920516/383871755-524ee47d-8d35-4f08-b4f0-9119072ed117.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4NzE3NTUtNTI0ZWU0N2QtOGQzNS00ZjA4LWI0ZjAtOTExOTA3MmVkMTE3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE3ZjExMGY0MjM0MTRkYjA1YmE1NTQwODk4NGMyMTYwYTI0ZmVjOTE5MmQwM2JkYjMzYmZjY2VlMWVmNTRhNTkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.kb9rBwVjtUrTcaAQPXrhmp279Syt9PPdowgdIykbxyE)

**Step 7: At the RedirectUri route that you provide for OpenID. Handle AUTH\_CODE received from the param on the url to login**[![image](https://private-user-images.githubusercontent.com/33920516/383874970-b89222ac-43cf-494d-b354-e10ba83d67d7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4NzQ5NzAtYjg5MjIyYWMtNDNjZi00OTRkLWIzNTQtZTEwYmE4M2Q2N2Q3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThjY2MzY2I2YjVhNTIwMThjNzFjMTBkNjk3NDNmMGQxMzNlOWUyZmE1MzY3YzYxNTllZDdjNDBiM2Q1MzA1NmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.NkM4SdwVD-tm-5IN2T78wDuCGfOF38rIwgCOcFwiCSg)](https://private-user-images.githubusercontent.com/33920516/383874970-b89222ac-43cf-494d-b354-e10ba83d67d7.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4NzQ5NzAtYjg5MjIyYWMtNDNjZi00OTRkLWIzNTQtZTEwYmE4M2Q2N2Q3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThjY2MzY2I2YjVhNTIwMThjNzFjMTBkNjk3NDNmMGQxMzNlOWUyZmE1MzY3YzYxNTllZDdjNDBiM2Q1MzA1NmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.NkM4SdwVD-tm-5IN2T78wDuCGfOF38rIwgCOcFwiCSg)

- Send AUTH\_CODE to api LoginWithAuthCode and received user info to login [![image](https://private-user-images.githubusercontent.com/33920516/383885025-44b3f14c-f8fc-4ecb-b37d-c3a23bd1a179.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4ODUwMjUtNDRiM2YxNGMtZjhmYy00ZWNiLWIzN2QtYzNhMjNiZDFhMTc5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTViMTY4OTY0NjA4ODI4YmFhOWY0ZmVjY2IxNDE3Y2NjNGQ0YmRhNjVjMWYyMDY0NzgxZGUyZWQxODg2OTU0MjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.8IQL15hAjboP-2lhBo6Zb7KJkT-T062_w0vy6fJjz1U)](https://private-user-images.githubusercontent.com/33920516/383885025-44b3f14c-f8fc-4ecb-b37d-c3a23bd1a179.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODIxMjY1ODEsIm5iZiI6MTc4MjEyNjI4MSwicGF0aCI6Ii8zMzkyMDUxNi8zODM4ODUwMjUtNDRiM2YxNGMtZjhmYy00ZWNiLWIzN2QtYzNhMjNiZDFhMTc5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MjIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjIyVDExMDQ0MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTViMTY4OTY0NjA4ODI4YmFhOWY0ZmVjY2IxNDE3Y2NjNGQ0YmRhNjVjMWYyMDY0NzgxZGUyZWQxODg2OTU0MjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.8IQL15hAjboP-2lhBo6Zb7KJkT-T062_w0vy6fJjz1U)

You can sync user from your app to OpenId with one command
----------------------------------------------------------

[](#you-can-sync-user-from-your-app-to-openid-with-one-command)

```
php artisan openid:sync-user
```

This command will get **'email', 'email\_verified\_at', 'first\_name', 'last\_name', 'phone', 'password'** of your app and sync to OpenId In case you want to sync user to OpenId when updating and creating new user, use
---------------------------------------------------------------------------------

[](#in-case-you-want-to-sync-user-to-openid-when-updating-and-creating-new-user-use-)

```
SyncDataService::syncUser($email)
```

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance30

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity16

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/d6790f424effebf0fc94b5a16b16ce52023a7422d487ef4dc8ea63b86362d28b?d=identicon)[viettruong2495](/maintainers/viettruong2495)

---

Top Contributors

[![viettruong2495](https://avatars.githubusercontent.com/u/33920516?v=4)](https://github.com/viettruong2495 "viettruong2495 (16 commits)")

### Embed Badge

![Health badge](/badges/d2d3-openid-integration/health.svg)

```
[![Health](https://phpackages.com/badges/d2d3-openid-integration/health.svg)](https://phpackages.com/packages/d2d3-openid-integration)
```

###  Alternatives

[vitalybaev/laravel5-dkim

Laravel 5/6 package for signing outgoing messages with DKIM.

3163.1k](/packages/vitalybaev-laravel5-dkim)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
