@@ -13,7 +13,10 @@ Before the session_start() use the command:
13
13
14
14
``` php
15
15
<?php
16
- $handler = new \ByJG\Session\JwtSession('your.domain.com', 'your super secret key');
16
+ $sessionConfig = (new \ByJG\Session\SessionConfig('your.domain.com'))
17
+ ->withSecret('your super secret key');
18
+
19
+ $handler = new \ByJG\Session\JwtSession($sessionConfig);
17
20
session_set_save_handler($handler, true);
18
21
```
19
22
@@ -34,7 +37,7 @@ Just to use.
34
37
You can read more in this Codementor's article:
35
38
[ Using JSON Web Token (JWT) as a PHP Session] ( https://www.codementor.io/byjg/using-json-web-token-jwt-as-a-php-session-axeuqbg1m )
36
39
37
- ## Security Information
40
+ # Security Information
38
41
39
42
The JWT Token cannot be changed, but it can be read.
40
43
This implementation save the JWT into a client cookie.
@@ -43,47 +46,119 @@ Because of this _**do not** store in the JWT Token sensible data like passwords_
43
46
# Install
44
47
45
48
```
46
- composer require "byjg/jwt-session=1 .0.*"
49
+ composer require "byjg/jwt-session=2 .0.*"
47
50
```
48
51
49
- # Customizations
50
52
51
- ## Setting the validity of JWT Token
53
+ # Setting the validity of JWT Token
52
54
53
55
``` php
54
56
<?php
55
- // Setting to 50 minutes
56
- $handler = new \ByJG\Session\JwtSession('your.domain.com', 'your super secret key', 50);
57
+ $sessionConfig = (new \ByJG\Session\SessionConfig('your.domain.com'))
58
+ ->withSecret('your super secret key')
59
+ ->withTimeoutMinutes(60); // You can use withTimeoutHours(1)
60
+
61
+ $handler = new \ByJG\Session\JwtSession($sessionConfig);
57
62
session_set_save_handler($handler, true);
58
63
```
59
64
60
- ## Setting the different Session Contexts
65
+ # Setting the different Session Contexts
61
66
62
67
``` php
63
68
<?php
64
- $handler = new \ByJG\Session\JwtSession('your.domain.com', 'your super secret key', 20, 'MYCONTEXT');
69
+ $sessionConfig = (new \ByJG\Session\SessionConfig('your.domain.com'))
70
+ ->withSecret('your super secret key')
71
+ ->withSessionContext('MYCONTEXT');
72
+
73
+ $handler = new \ByJG\Session\JwtSession($sessionConfig);
65
74
session_set_save_handler($handler, true);
66
75
```
67
76
68
- ## Create the handler and replace the session handler
77
+ # Create the handler and replace the session handler
78
+
79
+ ``` php
80
+ <?php
81
+ $sessionConfig = (new \ByJG\Session\SessionConfig('your.domain.com'))
82
+ ->withSecret('your super secret key')
83
+ ->replaceSessionHandler();
84
+
85
+ $handler = new \ByJG\Session\JwtSession($sessionConfig);
86
+ ```
87
+
88
+ # Specify cookie domain
69
89
70
90
``` php
71
91
<?php
72
- $handler = new \ByJG\Session\JwtSession('your.domain.com', 'your super secret key');
73
- $handler->replaceSessionHandler(true);
92
+ $sessionConfig = (new \ByJG\Session\SessionConfig('your.domain.com'))
93
+ ->withSecret('your super secret key')
94
+ ->withCookie('.mydomain.com', '/')
95
+ ->replaceSessionHandler();
96
+
97
+ $handler = new \ByJG\Session\JwtSession($sessionConfig);
74
98
```
75
99
76
- ## Create the handler and replace the session handler, specifying cookie domain valid for all subdomains of mydomain.com
100
+ # Uses RSA Private/Public Keys
77
101
78
102
``` php
79
103
<?php
80
- $handler = new \ByJG\Session\JwtSession('your.domain.com', 'your super secret key', null, null, '.mydomain.com');
81
- $handler->replaceSessionHandler(true);
104
+ $secret = <<<PRIVATE
105
+ -----BEGIN RSA PRIVATE KEY-----
106
+ MIIEpQIBAAKCAQEA5PMdWRa+rUJmg6QMNAPIXa+BJVN7W0vxPN3WTK /OIv5gxgmj
107
+ 2inHGGc6f90TW /to948LnqGtcD3CD9KsI55MubafwBYjcds1o9opZ0vYwwdIV80c
108
+ OVZX1IUZFTbnyyKcXeFmKt49A52haCiy4iNxcRK38tOCApjZySx /NzMDeaXuWe+1
109
+ nd3pbgYa /I8MkECa5EyabhZJPJo9fGoSZIklNnyq4TfAUSwl+KN /zjj3CXad1oDT
110
+ 7XDDgMJDUu /Vxs7h3CQI9zILSYcL9zwttbLnJW1WcLlAAIaAfABtSZboznsStMnY
111
+ to01wVknXKyERFs7FLHYqKQANIvRhFTptsehowIDAQABAoIBAEkJkaQ5EE0fcKqw
112
+ K8BwMHxKn81zi1e9q1C6iEHgl8csFV03+BCB4WTUkaH2udVPJ9ZJyPArLbQvz3fS
113
+ wl1+g4V /UAksRtRslPkXgLvWQ2k8KoTwBv /3nn9Kkozk /h8chHuii0BDs30yzSn4
114
+ SdDAc9EZopsRhFklv9xgmJjYalRk02OLck73G+d6MpDqX56o2UA /lf6i9MV19KWP
115
+ HYip7CAN+i6k8gA0KPHwr76ehgQ6YHtSntkWS8RfVI8fLUB1UlT3HmLgUBNXMWkQ
116
+ ZZbvXtNOt6NtW /WIAHEYeE9jmFgrpW5jKJSLn5iGVPFZwJIZXRPyELEs9NHWkS6e
117
+ GmdzxnECgYEA8+m05B /tmeZOuMrPVJV9g+aBDcuxmW+sdLRch+ccSmx4ZNQOLVoU
118
+ klYgTZq /a1O4ENq0h2WgccNlRHdcH4sXMBvLalA /tFhZMUuA /KXWyZ1F0hBnjHVF
119
+ cj1alHCqh+9qJDGdn4mxSmrp8p0rfeWgBwlFtJEJmjjDWDCtVY+JZcsCgYEA8EuV
120
+ WF /ilgDjgC4jMCYNuO0oFGBbtNP17PuU3kh8W+joqK /nufZ3NLy1WrDIpqa9YPex
121
+ 328Nnjljf5GJWSdMchAp82waLzl7FaaBTY0iyFAK4J0jfC /fVLx82+wpM3utDnh8
122
+ 9x5iIboO5U7uEJ7k8X2p64GoprlKJSRmGAJ7eIkCgYEAw5IsXI3NMY0cqcbUHvoO
123
+ PehgqfMdX+3O1XSYjM+eO35lulLdWzfTLtKn7BGcUi46dCkofzfZQd5uIEukLhaU
124
+ bRqcK45UxgHg4kmsDufaJKZaCWjl3hVZrZPMQSFlWsF41bSCshzxbr3y /3lOGhA4
125
+ E+w3W+S /Uk0ZNGkzUltYy6kCgYEA0gRNeBr9z7rhG4O3j3qC3dCxCfYZ0Na8hy5v
126
+ M0PJJQ9QYTa04iyOjVItcyE1jaoHtLtoA+9syJBB7RoHIBufzcVg1Pbzf7jOYeLP
127
+ +jbTYp3Kk /vjKsQwfj /rJM+oRu3eF9qo5dbxT6btI++zVGV7lbEOFN6Sx30EV6gT
128
+ bwKkZXkCgYEAnEtN43xL8bRFybMc1ZJErjc0VocnoQxCHm7LuAtLOEUw6CwwFj9Q
129
+ GOl+GViVuDHUNQvURLn+6gg4tAemYlob912xIPaU44+lZzTMHBOJBGMJKi8WogKi
130
+ V5+cz9l31uuAgNfjL63jZPaAzKs8Zx6R3O5RuezympwijCIGWILbO2Q =
131
+ -----END RSA PRIVATE KEY-----
132
+ PRIVATE;
133
+
134
+ $public = <<<PUBLIC
135
+ -----BEGIN PUBLIC KEY-----
136
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5PMdWRa+rUJmg6QMNAPI
137
+ Xa+BJVN7W0vxPN3WTK /OIv5gxgmj2inHGGc6f90TW /to948LnqGtcD3CD9KsI55M
138
+ ubafwBYjcds1o9opZ0vYwwdIV80cOVZX1IUZFTbnyyKcXeFmKt49A52haCiy4iNx
139
+ cRK38tOCApjZySx /NzMDeaXuWe+1nd3pbgYa /I8MkECa5EyabhZJPJo9fGoSZIkl
140
+ Nnyq4TfAUSwl+KN /zjj3CXad1oDT7XDDgMJDUu /Vxs7h3CQI9zILSYcL9zwttbLn
141
+ JW1WcLlAAIaAfABtSZboznsStMnYto01wVknXKyERFs7FLHYqKQANIvRhFTptseh
142
+ owIDAQAB
143
+ -----END PUBLIC KEY-----
144
+ PUBLIC;
145
+
146
+ $sessionConfig = (new \ByJG\Session\SessionConfig( ' example.com' ))
147
+ - >withRsaSecret($secret, $public)
148
+ ->replaceSessionHandler();
149
+
150
+ $handler = new \ByJG\Session\JwtSession($sessionConfig);
82
151
```
83
152
84
- ## How it works
153
+ If you want to know more details about how to create RSA Public/Private Keys access:
154
+ https://github.com/byjg/jwt-wrapper
155
+
156
+
157
+ # How it works
85
158
86
159
We store a cookie named AUTH_BEARER_ <context name > with the session name. The PHPSESSID cookie is still created because
87
160
PHP create it by default but we do not use it;
88
161
89
162
163
+ ----
164
+ [ Open source ByJG] ( http://opensource.byjg.com )
0 commit comments