Wiki source code of org.clazzes.login.oauth

Version 4.1 by wolfgang_glas@iteg_at on 2017-10-13 09.25:09

Show last authors
1 The OAuth login module is a planned login facility providing access to third party OAuth-2.0 and OpenID/Connect Services.
2
3 The login service might also be configured to accept access tokens of issued to third parties by an authorization provider.
4
5 = {{id name="org.clazzes.login.oauth-Configuration"/}}Configuration =
6
7 The org.clazzes.login.oauth HttpLoginService is configured by the standard OSGi configuration service using the properties mentioned below:
8
9 (% class="relative-table" style="width: 100.0%;" %)
10 |=(% style="width: 23.6864%;" %)(((
11 Property
12 )))|=(% style="width: 76.3136%;" %)(((
13 Description
14 )))
15 |(% style="width: 23.6864%;" %)(((
16 sessionCookie
17 )))|(% style="width: 76.3136%;" %)(((
18 The name of the cookie to set in user agents.
19 )))
20 |(% style="width: 23.6864%;" %)(((
21 sessionTimeout
22 )))|(% style="width: 76.3136%;" %)(((
23 The timeout for cookie-based sessions in minutes. Sessions inactive for this time interval will be purged including all access/refresh/ID tokens requested from an OAuth/OpenID Provider.
24 )))
25 |(% style="width: 23.6864%;" %)(((
26 secureCookie
27 )))|(% style="width: 76.3136%;" %)(((
28 The secure flag of the issued cookie. Set this value to true, if your are located behind an SSL-terminated ReverseProxy.
29 )))
30 |(% style="width: 23.6864%;" %)(((
31 domain.<domain>.label
32 )))|(% style="width: 76.3136%;" %)(((
33 The mandatory human-readable label for the configured domain with identifier <domain>.
34 )))
35 |(% style="width: 23.6864%;" %)(((
36 domain.<domain>.authorizationLocation
37 )))|(% style="width: 76.3136%;" %)(((
38 The OAuth2 authorization endpoint URL. This value does not need to be set for full-featured OpenID Providers, where this value is fetched from the specified configurationLocation
39 )))
40 |(% style="width: 23.6864%;" %)(((
41 domain.<domain>.tokenLocation
42 )))|(% style="width: 76.3136%;" %)(((
43 The OAuth2 token endpoint URL. This value does not need to be set for full-featured OpenID Providers, where this value is fetched from the specified configurationLocation
44 )))
45 |(% style="width: 23.6864%;" %)(((
46 domain.<domain>.userLocation
47 )))|(% style="width: 76.3136%;" %)(((
48 The optional OAuth2 userinfo endpoint URL. This value does not need to be set for full-featured OpenID Providers, where this value is fetched from the specified configurationLocation
49 )))
50 |(% style="width: 23.6864%;" %)(((
51 domain.<domain>.configurationLocation
52 )))|(% style="width: 76.3136%;" %)(((
53 The well-known OpenID Connect configuration location.
54 )))
55 |(% style="width: 23.6864%;" %)(((
56 domain.<domain>.faviconLocation
57 )))|(% style="width: 76.3136%;" %)(((
58 The optional favicon location for domain, which doe not have a /favicon.ico resource on the root of their authorization web host.
59 )))
60 |(% style="width: 23.6864%;" %)(((
61 domain.<domain>.clientId
62 )))|(% style="width: 76.3136%;" %)(((
63 The client ID of our application as registered at the OAuth Provider.
64 )))
65 |(% style="width: 23.6864%;" %)(((
66 domain.<domain>.clientPassword
67 )))|(% style="width: 76.3136%;" %)(((
68 The password for the client ID of our application as registered at the OAuth Provider.
69 )))
70 |(% style="width: 23.6864%;" %)(((
71 domain.<domain>.scope
72 )))|(% style="width: 76.3136%;" %)(((
73 The mandatory scope to pass to the authorization endpoint.
74 )))
75 |(% style="width: 23.6864%;" %)(((
76 domain.<domain>.prompt
77 )))|(% style="width: 76.3136%;" %)(((
78 The optional prompt value to pass to the authorization endpoint.
79 )))
80 |(% style="width: 23.6864%;" %)(((
81 domain.<domain>.responseType
82 )))|(% style="width: 76.3136%;" %)(((
83 The optional response type to pass to the authorization endpoint.
84 )))
85 |(% style="width: 23.6864%;" %)(((
86 domain.<domain>.options
87 )))|(% style="width: 76.3136%;" %)(((
88 Comma-separated list of options from the set
89
90 * {{code language="none"}}lenientAccessTokenCheck{{/code}} - Used to by pass at_hash checks in issued ID tokens, need e.g. for microsoft providers.
91 * {{code language="none"}}propagateLocale{{/code}} - Used to propagate the locale of the login iframe to the OAuth provider as the {{code language="none"}}locale{{/code}} URL parameter.
92 )))
93
94 = {{id name="org.clazzes.login.oauth-Examples"/}}Examples =
95
96 == {{id name="org.clazzes.login.oauth-github.com"/}}github.com ==
97
98 Github implements OAuth2 and is not a full-features OpenID Connect provider.
99
100 |=(((
101 Property
102 )))|=(((
103 Value
104 )))
105 |(((
106 domain.GITHUB.authorizationLocation
107 )))|(((
108 (% class="nolink" %)http:~/~/github.com/login/oauth/authorize
109 )))
110 |(((
111 domain.GITHUB.userLocation
112 )))|(((
113 (% class="nolink" %)https:~/~/api.github.com/user
114 )))
115 |(((
116 domain.GITHUB.label
117 )))|(((
118 github.com
119 )))
120 |(((
121 domain.GITHUB.clientId
122 )))|(((
123 Cleint ID a registered under 'Authorized OAuth Apps' [[https:~~/~~/github.com/settings/applications>>url:https://github.com/settings/applications||shape="rect"]]\\
124 )))
125 |(((
126 domain.GITHUB.clientPassword
127 )))|(((
128 Password of the above mentioned client ID.\\
129 )))
130 |(((
131 domain.GITHUB.tokenLocation
132 )))|(((
133 (% class="nolink" %)https:~/~/github.com/login/oauth/access_token
134 )))
135 |(((
136 domain.GITHUB.scope
137 )))|(((
138 user
139 )))
140
141 \\
142
143 == {{id name="org.clazzes.login.oauth-google.com"/}}google.com ==
144
145 Google implements a clean OpenID Connect provider with no hazzles.
146
147 |=(((
148 Property
149 )))|=(((
150 Value
151 )))
152 |(((
153 domain.GOOGLE.clientId
154 )))|(((
155 Client ID as registered under [[https:~~/~~/console.developers.google.com/apis/credentials>>url:https://console.developers.google.com/apis/credentials||shape="rect"]]\\
156 )))
157 |(((
158 domain.GOOGLE.clientPassword
159 )))|(((
160 \\
161 )))
162 |(((
163 domain.GOOGLE.configurationLocation
164 )))|(((
165 (% class="nolink" %)https:~/~/accounts.google.com/.well-known/openid-configuration
166 )))
167 |(((
168 domain.GOOGLE.label
169 )))|(((
170 google.com
171 )))
172 |(((
173 domain.GOOGLE.scope
174 )))|(((
175 openid profile email
176 )))
177 |(((
178 domain.GOOGLE.accessType
179 )))|(((
180 offline
181 )))
182 |(((
183 domain.GOOGLE.prompt
184 )))|(((
185 consent
186 )))
187
188 \\
189
190 = {{id name="org.clazzes.login.oauth-FurtherReadings"/}}Further Readings =
191
192 OpenID 1.0 Specification: [[http:~~/~~/openid.net/specs/openid-connect-core-1_0.html>>url:http://openid.net/specs/openid-connect-core-1_0.html||shape="rect"]]
193
194 Microsoft's implementation notes: [[https:~~/~~/docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokens>>url:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-tokens||shape="rect"]]
195
196 Microsoft Online OpenID configuration: [[https:~~/~~/login.microsoftonline.com/common/.well-known/openid-configuration>>url:https://login.microsoftonline.com/common/.well-known/openid-configuration||shape="rect"]]
197
198 Google's OpenID Connect implementation notes: [[https:~~/~~/developers.google.com/identity/protocols/OpenIDConnect>>url:https://developers.google.com/identity/protocols/OpenIDConnect||shape="rect"]]
199
200 Google Accounts OpenID configuration: [[https:~~/~~/accounts.google.com/.well-known/openid-configuration>>url:https://accounts.google.com/.well-known/openid-configuration||shape="rect"]]
201
202 github OAuth Guide: [[https:~~/~~/developer.github.com/v3/oauth>>url:https://developer.github.com/v3/oauth||shape="rect"]]
203
204 IANA registry of JSON Web Token Claims: [[https:~~/~~/www.iana.org/assignments/jwt/jwt.xhtml>>url:https://www.iana.org/assignments/jwt/jwt.xhtml||shape="rect"]]
205
206 = {{id name="org.clazzes.login.oauth-RFCs"/}}RFCs =
207
208 RFC 7515, (% style="color: rgb(0,0,0);" %)JSON Web Signature (JWS), [[https:~~/~~/tools.ietf.org/html/rfc7515>>url:https://tools.ietf.org/html/rfc7515||shape="rect"]]
209
210 RFC 7516, (% style="color: rgb(0,0,0);" %)JSON Web Encryption (JWE), [[https:~~/~~/tools.ietf.org/html/rfc7516>>url:https://tools.ietf.org/html/rfc7516||shape="rect"]]
211
212 RFC 7517, (% style="color: rgb(0,0,0);" %)JSON Web Key (JWK), [[https:~~/~~/tools.ietf.org/html/rfc7517>>url:https://tools.ietf.org/html/rfc7517||shape="rect"]]
213
214 RFC 7518, JSON Web Algorithms (JWA), [[https:~~/~~/tools.ietf.org/html/rfc7518>>url:https://tools.ietf.org/html/rfc7518||shape="rect"]]
215
216 RFC 7519, JSON Web Token (JWT), [[https:~~/~~/tools.ietf.org/html/rfc7519>>url:https://tools.ietf.org/html/rfc7519||shape="rect"]]