Compare commits

...
3340 Commits
Author SHA1 Message Date
keycloak-bot 31601c63af Set version to 1.8.0.Final 2016-01-29 10:46:00 +00:00
Stian Thorgersen 13c4660a78 Merge pull request #2134 from stianst/1.8.x
KEYCLOAK-2410
2016-01-29 11:42:58 +01:00
Stian Thorgersen 7ff32deeae KEYCLOAK-2410
TOTP shows both realm name and display name
2016-01-29 11:00:38 +01:00
Marek Posolda c5a32dce7c Merge pull request #2133 from mposolda/1.8.x
Fix sybase
2016-01-29 09:35:29 +01:00
mposolda adef16d261 Fix sybase 2016-01-29 08:41:45 +01:00
Bill Burke 1830575570 Update adapter-config.xml 2016-01-25 10:19:00 -05:00
Stian Thorgersen 93140f7852 Merge pull request #2097 from stianst/1.8.x
1.8.x
2016-01-25 12:47:31 +01:00
Stian Thorgersen 8966121f5c KEYCLOAK-2386
offlineSessions missing after restart when installed using overlay and cli script
2016-01-25 11:48:58 +01:00
Bill Burke 7acfcfb5ea Merge pull request #2095 from bdecoste/1.8.x
KeyStore element in subsystem not required
2016-01-22 18:34:43 -05:00
root 8b8e28a1e6 KeyStore element in subsystem not required 2016-01-22 15:09:07 -08:00
Bill Burke eb75fe0888 Merge pull request #2092 from lkubik/removeDuplicateDep
Remove duplicated dependency
2016-01-22 17:09:21 -05:00
Stian Thorgersen b3fecb6597 Merge pull request #2091 from lkubik/removeDuplicateDep
Remove duplicated dependency
2016-01-22 13:27:28 +01:00
Lukas Kubik fc135da04a Remove duplicated dependency and remove version which is set by dep. management. 2016-01-22 13:27:19 +01:00
Lukas Kubik b759fb89d9 Remove duplicated dependency 2016-01-22 12:00:30 +01:00
Bill Burke f357310f40 Merge pull request #2088 from patriot1burke/1.8.x
KEYCLOAK-2373 KEYCLOAK-2376
2016-01-21 21:30:07 -05:00
Bill Burke f21d620e02 KEYCLOAK-2373 KEYCLOAK-2376 2016-01-21 20:26:41 -05:00
Stian Thorgersen 4ba7846ede Merge pull request #2086 from stianst/1.8.x
Fixed sql syntax error in credential migration script
2016-01-21 20:22:25 +01:00
Moritz Becker 0a39521581 Fixed sql syntax error in credential migration script 2016-01-21 19:48:20 +01:00
Stian Thorgersen 030786ce55 Merge pull request #2083 from stianst/1.8.x
client UI fix
2016-01-21 16:20:44 +01:00
Moritz Becker 6287e89acd client UI fix 2016-01-21 16:20:09 +01:00
Stian Thorgersen ad64f42266 Merge pull request #2076 from stianst/1.8.x
Version bump
2016-01-21 12:37:41 +01:00
Stian Thorgersen 53d6953c9f Version bump 2016-01-21 12:07:14 +01:00
Stian Thorgersen b2f9775da5 Merge pull request #2066 from stianst/1.8.x
KEYCLOAK-2346 Add identity provider and external username to event wh…
2016-01-20 13:00:15 +01:00
Stian Thorgersen 40bb68e265 Merge pull request #2058 from velias/KEYCLOAK-2348-1_8
KEYCLOAK-2348 - Social login provider for Microsoft Live account for
2016-01-20 10:35:29 +01:00
Stian Thorgersen dacb1ebd50 KEYCLOAK-2346 Add identity provider and external username to event when login via broker 2016-01-20 10:23:22 +01:00
Vlastimil Elias 063f2aa486 RHD-1382 - review comments resolved 2016-01-20 08:57:14 +01:00
Vlastimil Elias 4f9e641fda KEYCLOAK-2348 - Social login provider for Microsoft Live account for
Keycloak 1.8 branch
2016-01-19 16:40:38 +01:00
Stian Thorgersen 1f9ec6a907 Merge pull request #2057 from stianst/1.8.x
KEYCLOAK-2344
2016-01-19 13:35:45 +01:00
Stian Thorgersen 2648d0f1c5 KEYCLOAK-2344
Realm Display Name is not used in verification e-mail
2016-01-19 13:02:45 +01:00
Stian Thorgersen 1dfe480c59 Merge pull request #2043 from stianst/1.8.x
[KEYCLOAK-2336] - Support ECP clients using SOAP 1.1
2016-01-18 19:16:57 +01:00
Stian Thorgersen 6b242b26a9 Version bump 2016-01-18 14:49:24 +01:00
Stian Thorgersen 7b77cd7d1f KEYCLOAK-2313 Add getName, getDisplayName, getDisplayNameHtml to account RealmBean 2016-01-18 14:42:32 +01:00
Pedro Igor 8a0c53bf1d [KEYCLOAK-2336] - Support ECP clients using SOAP 1.1 2016-01-18 14:38:25 +01:00
Stian Thorgersen a262d2263e Merge pull request #2040 from stianst/1.8.x
KEYCLOAK-2319
2016-01-18 14:37:27 +01:00
Stian Thorgersen bf548945db KEYCLOAK-2319
Cannot login to admin console after upgrade 1.6 -> 1.8.CR1
2016-01-18 12:31:21 +01:00
Bill Burke fd2c3996e2 Merge pull request #2037 from ccheneau/1.8.x
French translation updates for keycloak 1.8
2016-01-15 17:32:06 -05:00
ccheneau ab81456fb3 French translations updates for keycloak 1.8 2016-01-15 20:57:00 +01:00
Alexander Schwartz e9445cfc20 set timeSkew when passing tokens to init(), also allow timeSkew to be passed as a parameter / KEYCLOAK-2322 2016-01-15 16:39:24 +01:00
Stian Thorgersen 75d715d8a7 Merge pull request #2015 from stianst/master
Remove reference to built-in admin account from docs
2016-01-13 09:03:15 +01:00
Stian Thorgersen 62b90ee4e3 Remove reference to built-in admin account from docs 2016-01-13 09:02:52 +01:00
Stian Thorgersen 2f88868e20 Merge pull request #2014 from ssilvert/KEYCLOAK-2294-pi-testrealm
KEYCLOAK-2294 Partial import can fail with 'Removing a detached insta…
2016-01-13 08:37:49 +01:00
Stan Silvert b0de77013c KEYCLOAK-2294 Partial import can fail with 'Removing a detached instance' 2016-01-12 15:46:48 -05:00
Stian Thorgersen 25cd3e3ba8 Merge pull request #2013 from stianst/master
KEYCLOAK-2298
2016-01-12 20:31:37 +01:00
Stian Thorgersen 1b0bf966b6 KEYCLOAK-2298
Demo doesn't have add-user-keycloak.bat
2016-01-12 19:46:34 +01:00
Marek Posolda d8e28ad96b Merge pull request #2012 from mposolda/master
KEYCLOAK-2290 Migration fixes. Bulk update of algorithm field during migration
2016-01-12 18:49:34 +01:00
mposolda 3336d4d7ac KEYCLOAK-2290 bulk update of algorithm field during migration from 1.7 2016-01-12 18:04:50 +01:00
Stian Thorgersen ee3a880a55 Merge pull request #1999 from pedroigor/KEYCLOAK-2266
[KEYCLOAK-2266] - OAuth2 Token Introspection.
2016-01-12 15:37:41 +01:00
Pedro Igor c9f9ee9799 [KEYCLOAK-2266] - OAuth2 Token Introspection. 2016-01-12 11:16:42 -02:00
Marek Posolda 0536f2c247 Merge pull request #2010 from mposolda/master
KEYCLOAK-2229 Fix NoClassDefFoundError when IdpEmailVerificationAuthe…
2016-01-12 11:31:16 +01:00
mposolda 6f262423f1 KEYCLOAK-2229 Fix NoClassDefFoundError when IdpEmailVerificationAuthenticator is used for link accounts during first broker login 2016-01-12 10:37:44 +01:00
Stian Thorgersen 3c5e7872a7 Merge pull request #2009 from stianst/master
KEYCLOAK-2290
2016-01-12 10:32:22 +01:00
Stian Thorgersen 421dc6043d KEYCLOAK-2290
Migration: empty algorithm field on user credentials of type 'password'
2016-01-12 09:46:35 +01:00
Stian Thorgersen 9402f89d8e Merge pull request #2008 from stianst/master
KEYCLOAK-2229
2016-01-12 09:18:57 +01:00
Stian Thorgersen 81a0135fa6 KEYCLOAK-2229
First broker login throws NoClassDefFoundError: org/keycloak/broker/provider/BrokeredIdentityContext
2016-01-12 09:18:03 +01:00
Bill Burke 43dc250bf2 Merge pull request #2006 from thomasdarimont/issue/KEYCLOAK-2040-Conditional-OTP-Authentication
KEYCLOAK-2040 - Add support for Conditional OTP auth.
2016-01-11 14:56:48 -05:00
Marek Posolda bc3222ab67 Merge pull request #2007 from mposolda/master
Fix DB tests. Cleanup after AddUserTest
2016-01-11 18:56:56 +01:00
mposolda e761d6ce10 Fix DB tests. Cleanup after AddUserTest 2016-01-11 18:00:56 +01:00
Thomas Darimont 46991764d4 KEYCLOAK-2040 - Add support for Conditional OTP auth.
Previously it was not possible to conditionally show a OTP authentication
form. This PR adds support to conditionally require OTP authentication
based on a custom user attribute, a role, a request header pattern
(with black- and whitelisting) as well as a configurable default in
case no condition matches.
2016-01-11 17:39:42 +01:00
Stian Thorgersen 747c0f9869 Merge pull request #2004 from stianst/master
KEYCLOAK-2288
2016-01-11 17:32:38 +01:00
Marek Posolda 5424cd80a8 Merge pull request #2005 from mposolda/master
Fix MySQL - fixing transactions during bootstrap
2016-01-11 17:02:08 +01:00
Stian Thorgersen 8d2becf681 Fix import of com.mongodb.util.MyAsserts.assertFalse 2016-01-11 15:47:09 +01:00
mposolda c3f69fdc54 Fix MySQL - fixing transactions during bootstrap 2016-01-11 15:31:45 +01:00
Stian Thorgersen 45215f361f KEYCLOAK-2288
Upgrade Mongo driver version to 3.2.0
2016-01-11 15:10:00 +01:00
Stian Thorgersen 802488cea0 Merge pull request #2003 from mposolda/master
Fix mongo model
2016-01-11 13:58:06 +01:00
Stian Thorgersen 3ac3d79e30 Merge pull request #2002 from stianst/master
KEYCLOAK-2284
2016-01-11 13:22:44 +01:00
mposolda fe8755d4a4 Fix mongo model 2016-01-11 13:00:56 +01:00
Stian Thorgersen e2b889d727 KEYCLOAK-2284
Setup of background tasks doesn't close KeycloakSession
2016-01-11 11:41:36 +01:00
Stian Thorgersen 2ec4cb82cc Merge pull request #2001 from stianst/master
KEYCLOAK-2278
2016-01-11 11:41:15 +01:00
Stian Thorgersen bc14cade62 KEYCLOAK-2278
NoSuchMethodError org.infinispan.Cache.entrySet() in EAP6 server overlay
2016-01-11 10:07:04 +01:00
Stian Thorgersen a6c852603e Merge pull request #2000 from mstruk/truststore
KEYCLOAK-1717 Truststore SPI and file provider
2016-01-11 09:24:53 +01:00
Stian Thorgersen f1602b3b8d Merge pull request #1998 from ssilvert/partial-import
KEYCLOAK-1979: Partial import
2016-01-11 09:22:09 +01:00
Stian Thorgersen 7c8bc5814e Merge pull request #1990 from raehalme/KEYCLOAK-2257
KEYCLOAK-2257: Store user attribute when accepting terms and conditions
2016-01-11 09:03:58 +01:00
Stian Thorgersen 33f83689d5 Merge pull request #1995 from stianst/master
Add test to create user, set password and login using admin endpoints
2016-01-11 09:01:44 +01:00
Marko Strukelj 80e2b8eb39 KEYCLOAK-1717 Truststore SPI and file provider 2016-01-10 12:39:30 +01:00
Stan Silvert fbff61bfba For overwrite, do all deletes, then all adds.
Minor UI enhancements.
Fix 2 JPA bugs.
General cleanup.
Documentation.
2016-01-08 13:45:22 -05:00
Bill Burke ba1a17e668 Merge pull request #1997 from patriot1burke/master
KEYCLOAK-2189
2016-01-08 12:05:50 -05:00
Bill Burke 7bc7510d1b KEYCLOAK-2189 2016-01-08 12:05:43 -05:00
Bill Burke dc337d684a improve client creation when template 2016-01-08 11:40:46 -05:00
Bill Burke 0f9d50924c Merge pull request #1996 from patriot1burke/master
improve client creation when template
2016-01-08 11:40:45 -05:00
Stian Thorgersen cf0eb1184a Add test to create user, set password and login using admin endpoints 2016-01-08 16:37:01 +01:00
Stian Thorgersen ecd31010fe Merge pull request #1994 from stianst/KEYCLOAK-2259
KEYCLOAK-2259
2016-01-08 16:36:12 +01:00
Stian Thorgersen 0985d3c88a Merge pull request #1993 from stianst/master
KEYCLOAK-2276
2016-01-08 16:35:56 +01:00
Stian Thorgersen ddd99c2411 KEYCLOAK-2259
Redirect URIs and token domains are matched case-sensitively
2016-01-08 15:38:00 +01:00
Stian Thorgersen 7834637749 KEYCLOAK-2276
Login page doesn't render properly when window height is less than 550px
2016-01-08 15:19:59 +01:00
Stian Thorgersen a90d7e54d4 Merge pull request #1992 from stianst/master
KEYCLOAK-2275
2016-01-08 15:19:38 +01:00
Stian Thorgersen bae2b62200 KEYCLOAK-2275
No Content-Security-Policy meta tag found on Cordova 5.x
2016-01-08 14:34:52 +01:00
Stian Thorgersen 71bcf697cc Merge pull request #1991 from stianst/master
KEYCLOAK-2272
2016-01-08 14:34:31 +01:00
Stian Thorgersen 9acb4b86aa Add note that JDK8 is required to build and to run the server 2016-01-08 13:56:07 +01:00
Stian Thorgersen dee0be4237 KEYCLOAK-2272
Update keycloak-datasources.xml and keycloak-infinispan.xml
2016-01-08 13:39:49 +01:00
Thomas Raehalme c4544e8caf Like other timestamps attribute value is now seconds since 1970. 2016-01-08 14:21:43 +02:00
Thomas Raehalme bca3893070 Required action TermsAndConditions now stores user attribute indicating acceptance of terms and conditions. 2016-01-08 13:14:04 +02:00
Bill Burke 280725a2ae Merge pull request #1985 from patriot1burke/master
KEYCLOAK-1990 KEYCLOAK-1991
2016-01-07 18:24:31 -05:00
Bill Burke 2892b093ab Merge remote-tracking branch 'upstream/master' 2016-01-07 17:25:58 -05:00
Bill Burke 78fe064cf0 2213 2016-01-07 17:25:47 -05:00
Stian Thorgersen 30aaea73e4 Merge pull request #1989 from stianst/master
KEYCLOAK-2127 Re-enable set admin user with welcome page
2016-01-07 16:20:28 +01:00
Stian Thorgersen 4b1b697aa3 KEYCLOAK-2127 Re-enable set admin user with welcome page 2016-01-07 16:19:59 +01:00
Stian Thorgersen 112a44676d Merge pull request #1988 from stianst/KEYCLOAK-2269
KEYCLOAK-2269
2016-01-07 14:08:01 +01:00
Stian Thorgersen f7282d71e5 Merge pull request #1987 from stianst/master
KEYCLOAK-2252
2016-01-07 14:07:49 +01:00
Stian Thorgersen 9840c47970 Merge pull request #1986 from mhajas/master
KEYCLOAK-2127 Use add-user script for admin user creating
2016-01-07 13:17:47 +01:00
Stian Thorgersen 8695e16971 KEYCLOAK-2269
add-user script adds identityFederationEnabled field to keycloak-add-user.json
2016-01-07 13:17:10 +01:00
Stian Thorgersen 65f5ce9f13 KEYCLOAK-2252
Cannot delete client mapper with delete icon
2016-01-07 13:10:01 +01:00
Stian Thorgersen 77962ec896 Merge pull request #1984 from mstruk/providers-init
Prevent ProviderFactories being loaded twice
2016-01-07 11:57:12 +01:00
mhajas 54712e29aa Use user script for admin user creating 2016-01-07 11:24:51 +01:00
Bill Burke 71b6ed80ae Merge remote-tracking branch 'upstream/master' 2016-01-06 16:51:24 -05:00
Bill Burke 4a4bbf26f4 installation provider 2016-01-06 16:51:02 -05:00
Bill Burke 64de96d34b installation provider 2016-01-06 16:49:58 -05:00
Stian Thorgersen 084873f7fb Merge pull request #1981 from stianst/master
KEYCLOAK-2247 Upgrade to WildFly 10.0.0.CR5
2016-01-06 19:19:35 +01:00
Stian Thorgersen c684dac625 Tweak mem for Travis 2016-01-06 16:15:00 +01:00
Stian Thorgersen a5c159eeff KEYCLOAK-2247
Upgrade to WildFly 10.0.0.CR5
2016-01-06 16:15:00 +01:00
Bill Burke 1cbe5c4c80 Merge remote-tracking branch 'upstream/master' 2016-01-06 10:03:27 -05:00
Bill Burke 4a472b8272 KEYCLOAK-1990 KEYCLOAK-1991 2016-01-06 10:02:56 -05:00
Stian Thorgersen ddf74c0d9c Merge pull request #1983 from mstruk/ispn-conf
Fix missing offlineSessions local-cache config for demo-dist
2016-01-06 14:49:04 +01:00
Stian Thorgersen b2a3918fc3 Merge pull request #1982 from abstractj/KEYCLOAK-1919
Make use of display name by default for TOTP
2016-01-06 14:26:05 +01:00
Marko Strukelj aca00dd42c Prevent ProviderFactories being loaded twice 2016-01-05 23:07:13 +01:00
Marko Strukelj 2a8e868bc1 Fix missing offlineSession local-cache config for demo-dist 2016-01-05 22:56:44 +01:00
Stan Silvert 979205c827 Cleanup 2016-01-05 15:33:45 -05:00
Stan Silvert 55e36acfc0 For overwrite, delete then create.
Do all prepares to check for errors, then call doImport on each type.
Combine Realm Role and Client Role processing (RolesPartialImport).
2016-01-05 15:33:45 -05:00
Stan Silvert 4b6825806a Bare bones pagination for partial import results. 2016-01-05 15:33:44 -05:00
Stan Silvert 2d878805c1 Fix resource path for partial import events. 2016-01-05 15:33:43 -05:00
Stan Silvert dd038ddbd5 Add id to partial import results. 2016-01-05 15:33:43 -05:00
Stan Silvert f6a02bd408 Clean commit for partial import with single page for all imports. 2016-01-05 15:33:42 -05:00
Bruno Oliveira 7ec0dad88f Make use of display name by default for TOTP
- use realm name just in case of display name is not available
2016-01-05 18:31:13 -02:00
Marek Posolda 1e3ec1983d Merge pull request #1980 from mposolda/master
LDAP testing: added activation
2016-01-05 20:54:56 +01:00
mposolda 7ec02761ef LDAP testing: added activation 2016-01-05 20:53:25 +01:00
Bill Burke 7b30a6c9c4 Merge pull request #1979 from mposolda/master
Docs for LDAP mappers. Fix testsuite to pass with MSAD
2016-01-05 14:19:50 -05:00
Bill Burke 0d56713871 Merge pull request #1978 from patriot1burke/master
KEYCLOAK-2221
2016-01-05 14:19:33 -05:00
mposolda 658f204d92 Documentation for new LDAP mappers 2016-01-05 18:50:54 +01:00
mposolda 04401af470 Fix testsuite to pass with MSAD 2016-01-05 17:25:42 +01:00
Bill Burke 39d5a07218 KEYCLOAK-2221 2016-01-05 10:59:13 -05:00
Bill Burke a65f619c9a Merge pull request #1977 from mposolda/master
KEYCLOAK-2258 Removing leftovers of file model from docs and testsuite
2016-01-05 10:06:07 -05:00
Bill Burke 01c408ba68 Merge pull request #1975 from thomasdarimont/issue/KEYCLOAK-2256
KEYCLOAK-2256 - Guarantee deterministic ordering for custom user attributes in admin console.
2016-01-05 10:05:36 -05:00
Bill Burke 63975886cb Merge pull request #1974 from patriot1burke/master
set frameork for template config
2016-01-05 10:03:48 -05:00
Bill Burke c3f2ae1cd1 Merge pull request #1973 from thomasdarimont/issue/KEYCLOAK-2253
KEYCLOAK-2253 - Add support for ConfiguredProvider based UserFederationProviderFactory.
2016-01-05 10:03:40 -05:00
mposolda 133e4c59e5 KEYCLOAK-2258 Removing leftovers of file model from docs and testsuite 2016-01-05 15:25:22 +01:00
Marek Posolda d3247bc66a Merge pull request #1976 from mposolda/master
KEYCLOAK-2178 KEYCLOAK-1744 Added MSADUserAccountControlMapper. Remov…
2016-01-05 13:16:32 +01:00
mposolda b6718b44a1 KEYCLOAK-2178 KEYCLOAK-1744 Added MSADUserAccountControlMapper. Removing enableUserAccountControlAfterPasswordUpdate option 2016-01-05 12:11:48 +01:00
Thomas Darimont 15506e3db3 KEYCLOAK-2256 - Guarantee deterministic ordering for custom user attributes in admin console.
We now iterate over custom-user attributes in a deterministic way such that new attributes don't lead
to a complete reordering of the properties in the custom user attributes listings.
Previously the order of custom attributes in the user attributes listings was not deterministic which lead
to cases where keys that shared a common prefix where not placed at arbitrary positions.
Introduced a custom angularjs flter "toOrderedMapSortedByKey" that helps to deterministically iterate
over object properites.
2016-01-05 00:04:40 +01:00
Bill Burke 977f4051b3 Merge remote-tracking branch 'upstream/master' 2016-01-04 17:23:15 -05:00
Bill Burke 49c15f200e Merge pull request #1972 from dbarentine/master
KEYCLOAK-2255 Location header should return IdP alias instead of prov…
2016-01-04 17:18:42 -05:00
Bill Burke 3e5874b2a1 Merge pull request #1971 from abstractj/tooltip-initial-access-token
Tooltips for initial access token fields
2016-01-04 17:15:45 -05:00
Bill Burke f7ac5fae2a Merge pull request #1945 from raehalme/KEYCLOAK-1579
KEYCLOAK-1579: Replaced AdapterDeploymentContextBean with AdapterDeploymentContextFactoryBean
2016-01-04 17:15:25 -05:00
Bill Burke 22ba4847f4 Merge pull request #1965 from jean-merelis/translate
translation of messages to pt_BR
2016-01-04 17:14:55 -05:00
Bill Burke 90822e5b34 Merge pull request #1970 from abstractj/minor-update
Minor change for client registration documentation
2016-01-04 17:14:43 -05:00
Bill Burke 3f62cee836 Merge remote-tracking branch 'upstream/master' 2016-01-04 17:14:19 -05:00
Bill Burke 3bacbdf6ff set framework for template config 2016-01-04 17:13:15 -05:00
Thomas Darimont edcc39d906 KEYCLOAK-2253 - Use string representation for boolean properties in GenericUserFederationCtrl.
Adapted due to code review.
2016-01-04 23:07:08 +01:00
Thomas Darimont 3ec516d14c KEYCLOAK-2253 - Add support for ConfiguredProvider based UserFederationProviderFactory.
UserFederationProvidersResource is now aware of ConfiguredProvider and allows sophisticated
configuration of configuration properties via ProviderConfigProperty definitions.
See DummyUserFederationProviderFactory. getConfigProperties() for example.

Previously  UserFederationProvidersResource did only support simple key-value pairs for expressing
configurable options.

Tested this by launching a standalone KeycloakServer and creating a new Dummy UserFederationProvider.
The default values, labels and help messages are correctly displayed and the values are stored correctly.
2016-01-04 22:23:14 +01:00
Dane Barentine d8d0298498 KEYCLOAK-2255 Location header should return IdP alias instead of provider ID. 2016-01-04 11:30:57 -08:00
Thomas Raehalme 8356409b44 Fixed some typos in the docs and added paragraph regarding GrantedAuthoritiesMapper. 2016-01-04 21:16:37 +02:00
Thomas Raehalme 57971ce0b2 Changed docs to match the new code. 2016-01-04 21:09:36 +02:00
Stian Thorgersen b708cd671e Merge pull request #1969 from vmuzikar/ui-stability
[KEYCLOAK-1865] Enable LdapUserFederationTest#invalidSettingsTest - already fixed
2016-01-04 20:07:52 +01:00
Bruno Oliveira 1b857387f2 Minor change for client registration documentation 2016-01-04 16:31:39 -02:00
Bruno Oliveira cea70337ef Tooltips for initial access token fields 2016-01-04 15:49:57 -02:00
Bill Burke 6d5de7b44e Merge remote-tracking branch 'upstream/master' 2016-01-04 11:26:15 -05:00
Bill Burke 10eba78036 Merge remote-tracking branch 'upstream/master'
Conflicts:
	saml/saml-protocol/src/main/java/org/keycloak/protocol/saml/profile/ecp/SamlEcpProfileProtocolFactory.java
2016-01-04 11:25:14 -05:00
Stian Thorgersen dd6b05224d Merge pull request #1968 from stianst/master
KEYCLOAK-2250
2016-01-04 14:33:39 +01:00
Stian Thorgersen e7009cac47 KEYCLOAK-2204 Add test to make sure disabled client can't refresh token 2016-01-04 13:15:58 +01:00
Stian Thorgersen eece3689f2 KEYCLOAK-2228
Deleting of realm when using JPA requires server restart
2016-01-04 13:04:33 +01:00
Vaclav Muzikar f48753f6e1 Enable LdapUserFederationTest#invalidSettingsTest - already fixed 2016-01-04 12:36:38 +01:00
Stian Thorgersen 392ce0b323 KEYCLOAK-2250
Infinispan offline sessions cache is missing from configuration files
2016-01-04 11:53:25 +01:00
Jean Merelis 2fce7f8498 fix doLogIn key (pt_BR) 2016-01-03 21:02:32 -02:00
Jean Merelis c5f19ff2b3 fix some missing translation (pt_BR) 2016-01-02 23:23:04 -02:00
Jean Merelis b24dfa0009 translation of messages to pt_BR 2016-01-02 00:37:47 -02:00
Stian Thorgersen a9b5d07263 Merge pull request #1964 from stianst/master
KEYCLOAK-2242
2015-12-23 14:39:41 +01:00
Stian Thorgersen eddf3eef17 KEYCLOAK-2242
Remove built-in admin account
2015-12-23 13:46:11 +01:00
Bill Burke dbac147419 client config refactor 2015-12-22 17:50:03 -05:00
Marek Posolda 6752a4f9b0 Merge pull request #1963 from mposolda/master
KEYCLOAK-1899 Added HardcodedLDAPRoleMapper
2015-12-22 20:43:09 +01:00
Pedro Igor 35804aa0df Merge pull request #1961 from pedroigor/KEYCLOAK-2202
[KEYCLOAK-2202] - Removing LoginProtocol in order to reuse SAML settings.
2015-12-22 13:48:54 -02:00
mposolda 41d22986d5 KEYCLOAK-1899 Added HardcodedLDAPRoleMapper 2015-12-22 16:22:02 +01:00
Pedro Igor 9172b5472e [KEYCLOAK-2202] - Removing LoginProtocol in order to reuse SAML settings. 2015-12-22 12:53:39 -02:00
Marek Posolda b27b0411a6 Merge pull request #1960 from mposolda/master
KEYCLOAK-2154 Group mapper fixes
2015-12-22 13:19:40 +01:00
mposolda 0c293089c3 KEYCLOAK-2154 Group mapper fixes 2015-12-22 12:32:37 +01:00
Marek Posolda 5403296ac6 Merge pull request #1959 from mposolda/master
KEYCLOAK-2154 Added Group mapper for LDAP. LDAP mappers improvements and fixes
2015-12-22 10:15:26 +01:00
mposolda 20548b402d Separate package for LDAP tests 2015-12-22 09:35:53 +01:00
mposolda 1747e0981f KEYCLOAK-2154 Added Group mapper for LDAP. LDAP mappers improvements and fixes 2015-12-22 08:54:09 +01:00
Bill Burke ea6374163d Merge pull request #1957 from stianst/master
KEYCLOAK-2043
2015-12-21 16:56:01 -05:00
Bill Burke 4782780857 Merge pull request #1958 from patriot1burke/master
refactor client create
2015-12-21 16:55:52 -05:00
Bill Burke b90409c5e4 refactor client create 2015-12-21 16:36:13 -05:00
Stian Thorgersen 9a921f66ff KEYCLOAK-2043
.well-known/openid-configuration doesn't set cache-control header
2015-12-21 15:35:23 +01:00
Stian Thorgersen 4a492ce13c Merge pull request #1956 from stianst/master
KEYCLOAK-2240
2015-12-21 14:29:17 +00:00
Stian Thorgersen 39904548eb KEYCLOAK-2240
Internationalize admin console title
2015-12-21 13:16:54 +01:00
Stian Thorgersen 18268f686c Merge pull request #1955 from stianst/master
Support for branding
2015-12-21 12:00:56 +00:00
Stian Thorgersen 1594e07628 KEYCLOAK-2239
Add link to keycloak.org to Keycloak logo
2015-12-21 12:15:36 +01:00
Stian Thorgersen 606e6fa479 KEYCLOAK-1934
Add display-name and display-name-html to realm
2015-12-21 12:15:13 +01:00
Stian Thorgersen 1afd3d422c Merge pull request #1952 from vmuzikar/ui-stability
KEYCLOAK-1865 Fix stability of some UI arquillian tests
2015-12-21 07:50:11 +00:00
Bill Burke 80fae7116b Merge pull request #1953 from patriot1burke/master
client template scope
2015-12-18 18:32:00 -05:00
Bill Burke 86a0995f29 fix test 2015-12-18 17:31:53 -05:00
Bill Burke a7c684b909 oops 2015-12-18 17:19:31 -05:00
Bill Burke 5caf3e0a2d Merge remote-tracking branch 'upstream/master' 2015-12-18 17:15:40 -05:00
Bill Burke d939b6a431 template scope 2015-12-18 17:15:27 -05:00
Vaclav Muzikar 42d17577d0 Upstream sync 2015-12-18 17:28:57 +01:00
Vaclav Muzikar eaf326dd37 Fix Client Mappers tests
(cherry picked from commit b9f9db0)
2015-12-18 17:18:59 +01:00
Vaclav Muzikar 53a542d1e2 Enable TokensTest (already fixed by previous commit bf70927)
(cherry picked from commit 6783bcb)
2015-12-18 17:15:20 +01:00
Vaclav Muzikar c51d5e9820 Fix PasswordPolicyTest
(cherry picked from commit 87b125e)
2015-12-18 17:15:18 +01:00
Vaclav Muzikar 817127a751 Fix + refactor SecurityDefensesTest
(cherry picked from commit a652173)
2015-12-18 17:15:16 +01:00
Vaclav Muzikar 0e6e3d10d8 Fix LoginSettingsTest
(cherry picked from commit bf70927)
2015-12-18 17:15:09 +01:00
Bill Burke 0197c69ac3 Merge pull request #1951 from pedroigor/KEYCLOAK-2202
[KEYCLOAK-2202] - Initial support for SAML ECP Profile.
2015-12-17 19:04:17 -05:00
Stian Thorgersen 83eea5036f Merge pull request #1948 from pdrozd/wf10
Arquillian xsl templates - changed namespaces to WF10.
2015-12-17 09:01:14 +00:00
Pedro Igor 1b614a379b [KEYCLOAK-2202] - Initial support for SAML ECP Profile. 2015-12-16 18:46:52 -02:00
Bill Burke 0527d441e3 better logging 2015-12-16 12:23:41 -05:00
Marek Posolda 6569b22c79 Merge pull request #1950 from mposolda/master
Mongo fix
2015-12-16 14:36:27 +01:00
mposolda d0ec1c3b02 Mongo fix 2015-12-16 14:35:59 +01:00
Marek Posolda 2fe7e2a952 Merge pull request #1949 from mposolda/master
LDAP mappers enhancements
2015-12-16 14:33:54 +01:00
mposolda 0d52e4e6c5 Added sync support to UserFederationMapper 2015-12-16 13:52:11 +01:00
mposolda 358c273d39 KEYCLOAK-2227 Added UserRolesRetrieveStrategy. Possibility to read user role mappings through 'memberOf' attribute 2015-12-16 13:52:11 +01:00
mposolda 215d59b1e5 KEYCLOAK-2053 Memberships based on memberUid like attribute 2015-12-16 13:52:11 +01:00
mposolda 2b409b3462 Minor test fix 2015-12-16 13:52:11 +01:00
Pavel Drozd b4e53b1677 Arquillian xsl templates - changed namespaces to WF10. 2015-12-16 10:26:10 +01:00
Marek Posolda 051f175f68 Merge pull request #1946 from dbarentine/master
KEYCLOAK-2229 Added depending on keycloak-broker-core module to resol…
2015-12-16 07:58:05 +01:00
Bill Burke fd447702e7 Merge pull request #1947 from patriot1burke/master
remove default client mappers when templated
2015-12-15 19:36:37 -05:00
Bill Burke ee79f5e69d remove default client mappers when templated 2015-12-15 17:37:53 -05:00
Dane Barentine de5baa9df7 KEYCLOAK-2229 Added depending on keycloak-broker-core module to resolve NoClassDefFoundError for BrokeredIdentityContext class 2015-12-15 11:15:55 -08:00
Thomas Raehalme 566a58b5d8 Replaced AdapterDeploymentContextBean with AdapterDeploymentContextFactoryBean and added support for KeycloakConfigResolver. 2015-12-15 11:53:10 +02:00
Marek Posolda f837cbfaa9 Merge pull request #1944 from mposolda/master
KEYCLOAK-1906 Customized LDAP filter. LDAP conditions improvements
2015-12-14 14:50:38 +01:00
mposolda 06a55419f1 KEYCLOAK-1906 Customized LDAP filter. LDAP conditions improvements 2015-12-14 13:55:11 +01:00
Marek Posolda 82a573a536 Merge pull request #1939 from mhajas/master
KEYCLOAK-1667 Added adapter tests of SAML to integration arquillian
2015-12-14 09:26:32 +01:00
Stian Thorgersen d46bad56ae Merge pull request #1942 from keycloak/wildfly-10
KEYCLOAK-2223 Upgrade to WildFly 10.0.0.CR4
2015-12-13 21:04:38 +00:00
Marko Strukelj 32af1bd3a5 KEYCLOAK-2223 Upgrade to WildFly 10.0.0.CR4 2015-12-13 21:26:07 +01:00
Bill Burke 38b9d05cd7 Merge pull request #1941 from patriot1burke/master
client templates
2015-12-11 21:02:40 -05:00
Bill Burke e26e31d8b4 client template ui 2015-12-11 17:56:45 -05:00
Bill Burke 2328e0a6f9 Merge remote-tracking branch 'upstream/master' 2015-12-11 10:31:55 -05:00
Bill Burke 96e1813b34 client templates backend 2015-12-11 10:31:42 -05:00
mhajas 97357d020b Merge remote-tracking branch 'upstream/master' 2015-12-11 15:43:03 +01:00
Pavel Drozd b466cec4e5 Merge pull request #1940 from vramik/master
arquillian-testsuite: updated screenshooter version
2015-12-11 15:32:51 +01:00
Pavel Drozd 9228c6a16b Merge pull request #1938 from mhajas/fixDataTable
Fix adapter tests errors caused by changed DataTable fragment
2015-12-11 15:29:28 +01:00
Pavel Drozd 35f8e3c19f Merge pull request #1937 from pdrozd/ssl-required
Support for testing ssl-required.
2015-12-11 15:28:38 +01:00
vramik 9956f425eb arquillian-testsuite: updated screenshooter version 2015-12-11 12:15:27 +01:00
mhajas 5464e600ea Set SAMLServlet test abstract 2015-12-10 17:23:33 +01:00
mhajas cbdba622a5 Merge remote-tracking branch 'upstream/master' 2015-12-10 15:27:55 +01:00
mhajas 49e9965125 Fix timeouts after logout from servlet 2015-12-10 15:26:33 +01:00
mhajas dcaf7ea9d5 Fix test errors caused by changed DataTable fragment 2015-12-10 11:46:40 +01:00
Pavel Drozd 3f51f620b7 Support for testing ssl-required. 2015-12-10 07:21:23 +01:00
Marek Posolda 06e44b185e Merge pull request #1936 from mposolda/master
KEYCLOAK-2124 Post-Broker login flow support
2015-12-09 17:35:00 +01:00
mposolda 17a2bd266b KEYCLOAK-2124 post-broker login flow docs 2015-12-09 17:34:44 +01:00
mposolda 081db0d353 KEYCLOAK-2124 Post-Broker login flow support 2015-12-09 16:36:26 +01:00
mhajas b82346761c Merge remote-tracking branch 'upstream/master' 2015-12-09 10:53:50 +01:00
mhajas 595e7a92e2 Added SAML servlets adapter tests to integration-arquillian 2015-12-09 10:50:25 +01:00
mhajas fee1dea3e6 Added SAML example adapter tests to integration-arqullian 2015-12-09 10:48:53 +01:00
mhajas 9a58e1276a Added integration-arqullian servlet used in SAML tests 2015-12-09 10:45:56 +01:00
mhajas 1d401767d6 Added integration-arqullian SAML example page objects 2015-12-09 10:42:02 +01:00
mhajas 68e3b6c504 Added integration-arqullian SAML servlets page objects 2015-12-09 10:41:17 +01:00
mhajas 813ddf365e Added integration-arqullian keycloak-saml resources 2015-12-09 10:39:34 +01:00
mhajas edf3499662 Added integration-arqullian configuration for SAML adapter tests 2015-12-09 10:36:42 +01:00
Marek Posolda df26caed07 Merge pull request #1933 from vramik/clients
KEYCLOAK-2203, KEYCLOAK-2205
2015-12-09 10:28:56 +01:00
Marek Posolda 9f9067663f Merge pull request #1932 from mhajas/fixDataTable
Fix xpath for rows in DataTable fragment
2015-12-09 10:28:48 +01:00
Marek Posolda 0f3d8b8513 Merge pull request #1935 from thomasdarimont/patch-1
Fixed missing ':' in the JSON example.
2015-12-09 08:52:32 +01:00
mhajas 4ca3bf530f Merge remote-tracking branch 'upstream/master' into fixDataTable 2015-12-09 07:41:45 +01:00
Thomas Darimont c8c0a45ce4 Fixed missing ':' in the JSON example. 2015-12-08 18:45:25 +01:00
Stian Thorgersen 7313b843b9 Merge pull request #1934 from stianst/KEYCLOAK-1900-PASS-HASH
KEYCLOAK-1900 Password Hash SPI
2015-12-08 16:17:32 +01:00
Stian Thorgersen 321cac2ab8 KEYCLOAK-1900 Refactoring 2015-12-08 14:06:40 +01:00
tsudot 162dd4051d KEYCLOAK-1900 Add password hash SPI and provider
- Default encoder set to Pbkdf2PasswordEncoder
2015-12-08 13:25:59 +01:00
vramik cd19c1acdf fix tests witch fails with phantomjs 2015-12-08 08:40:40 +01:00
vramik 44ed912154 Merge branch 'master' of https://github.com/keycloak/keycloak into clients
Conflicts:
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientForm.java
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/FlashMessage.java
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/OnOffSwitch.java
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/util/WaitUtils.java
	testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractAuthTest.java
	testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/console/clients/ClientRolesTest.java
2015-12-07 15:45:02 +01:00
vramik 39856c32d1 Merge branch 'master' of https://github.com/keycloak/keycloak into clients
Conflicts:
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientForm.java
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/FlashMessage.java
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/OnOffSwitch.java
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/util/WaitUtils.java
	testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractAuthTest.java
	testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/console/clients/ClientRolesTest.java
2015-12-07 15:44:34 +01:00
vramik d3a893b171 KEYCLOAK-2203 - Add new cluster node form doesn't validate host input 2015-12-07 15:28:39 +01:00
vramik ba861f227e added UI tests for client's tabs: clustering, installation 2015-12-07 15:09:24 +01:00
Tomas Kyjovsky 4a57bcc0b4 Merge pull request #1903 from tkyjovsk/master
Increased pageload timeout. Increased other timeouts for travis. Better handling of closeable alert messages.
2015-12-07 11:09:37 +01:00
Tomas Kyjovsky 87a8e017fa Disabled crudRole test, unstable. Role tests need rewrite. 2015-12-07 09:10:32 +01:00
Tomas Kyjovsky b8fe608aaf Merge upstream-master 2015-12-07 05:59:51 +01:00
mhajas d3e6b38a8e Fix xpath for DataTable row and tests 2015-12-04 14:26:24 +01:00
Marek Posolda 8589327cdd Merge pull request #1931 from mposolda/master
KEYCLOAK-2197 Fix broker tests to work with sybase. Added LoggingRule
2015-12-04 12:24:33 +01:00
vramik 1b936a1230 added UI tests for client scope 2015-12-04 12:04:39 +01:00
mposolda 45c490b640 KEYCLOAK-2197 Fix broker tests to work with sybase. Added LoggingRule 2015-12-04 11:44:30 +01:00
vramik 1dd3fc537b added UI tests for client mappers saml 2015-12-03 14:47:13 +01:00
Stian Thorgersen 73cf2404ff Merge pull request #1928 from stianst/master
KEYCLOAK-2176 Add default roles and actions to users created with add…
2015-12-03 13:30:29 +01:00
vramik c16b6e6a43 update ClientSettingsTest due to KEYCLOAK-1129 2015-12-03 12:49:29 +01:00
Stian Thorgersen 8d23422605 KEYCLOAK-2176 Add default roles and actions to users created with add-user script 2015-12-03 11:45:56 +01:00
Stian Thorgersen 9cd8d1612e Merge pull request #1926 from ssilvert/mappers-tooltip
Fix typo for mappers.tooltip
2015-12-03 11:44:39 +01:00
Stian Thorgersen 277faea1d0 Merge pull request #1924 from ppalaga/151202-rename-w9-subsystem-dir
Rename keycloak-wf9-subsystem directory to keycloak-wildfly-subsystem to match t
2015-12-03 10:53:36 +01:00
Stian Thorgersen 58c7b6090b Merge pull request #1919 from stianst/master
Cache fixes
2015-12-03 10:53:18 +01:00
Stian Thorgersen f45bb62fcc KEYCLOAK-2192
Class serialization issues when Realm and User caches are in ASYNC mode
2015-12-03 08:24:30 +01:00
Stian Thorgersen 34c3ffaae1 Ported AdminApiTest to use admin client 2015-12-03 08:24:23 +01:00
Stian Thorgersen a218cc3034 KEYCLOAK-2179 Cache fixes 2015-12-03 08:24:16 +01:00
Stan Silvert c62b3822f4 Fix typo for mappers.tooltip 2015-12-02 11:54:02 -05:00
Tomas Kyjovsky b0e9720f88 Increased arquillian timeouts. 2015-12-02 16:46:15 +01:00
Tomas Kyjovsky 6507f58b49 Merge upstream-master 2015-12-02 16:11:45 +01:00
Tomas Kyjovsky 46e2440d30 Refactoring of arquillian waiting methods. 2015-12-02 15:58:23 +01:00
vramik 9b51b6e43b Merge upstream/master into clients 2015-12-02 15:18:15 +01:00
Peter Palaga 4772b8401a KEYCLOAK-2099 fixup: Rename keycloak-wf9-subsystem directory to
keycloak-wildfly-subsystem to match the WF module it contains
2015-12-02 14:51:48 +01:00
vramik 2b25c120d4 added UI tests for client mappers oidc 2015-12-02 13:12:05 +01:00
Marek Posolda c19e65f93c Merge pull request #1922 from mposolda/master
Minor fixes in kerberos example
2015-12-02 12:15:18 +01:00
mposolda 87994e032d Minor fixes in kerberos example 2015-12-02 11:31:12 +01:00
Stian Thorgersen ee6753d31b KEYCLOAK-1813 KEYCLOAK-2182 Fixes enable/disable cache 2015-12-02 11:24:04 +01:00
Stian Thorgersen 09c18306c2 KEYCLOAK-2179
Realm and user cache is invalidated when added to other nodes
2015-12-02 11:23:54 +01:00
Marek Posolda 6124fd64f3 Merge pull request #1918 from mposolda/master
Fix typos
2015-12-02 10:25:15 +01:00
mposolda 2a03d23098 Fix typos 2015-12-02 08:51:20 +01:00
Stian Thorgersen ff806eae08 Version bump 2015-12-01 19:54:28 +01:00
Tomas Kyjovsky e44d6f9888 Merge upstream-master 2015-12-01 17:30:02 +01:00
Tomas Kyjovsky 4e79dde17f Removed travis profile from arq. testsuite. 2015-12-01 17:29:28 +01:00
Tomas Kyjovsky 29e05ecf0d Fixed arquillian wait intervals config. 2015-12-01 17:28:28 +01:00
Marek Posolda a388782f9b Merge pull request #1916 from mposolda/master
KEYCLOAK-2172 Added migration docs
2015-12-01 17:03:15 +01:00
mposolda 352ea30d20 KEYCLOAK-2172 Added migration docs 2015-12-01 17:02:31 +01:00
Marek Posolda 6e0444e17b Merge pull request #1915 from mposolda/master
KEYCLOAK-2172 Make Identity broker User Attribute mappers compatible …
2015-12-01 16:45:47 +01:00
Stian Thorgersen b3f0dc7399 Merge pull request #1914 from stianst/KEYCLOAK-2176
KEYCLOAK-2176
2015-12-01 16:37:56 +01:00
mposolda ad34d63cb3 KEYCLOAK-2172 Make Identity broker User Attribute mappers compatible with First Broker Login flow 2015-12-01 15:48:25 +01:00
Stian Thorgersen 703720fa43 Merge pull request #1912 from stianst/KEYCLOAK-2173
KEYCLOAK-2173 No such method on Infinispan on EAP6
2015-12-01 15:19:16 +01:00
Stian Thorgersen e01c789a93 KEYCLOAK-2176
User added by add-user script doesn't have access to account management
2015-12-01 15:14:40 +01:00
Stian Thorgersen 8064c88e3c Merge pull request #1913 from stianst/KEYCLOAK-2175
KEYCLOAK-2175
2015-12-01 14:41:55 +01:00
Stian Thorgersen b06e747d28 Merge pull request #1911 from stianst/KEYCLOAK-2174
KEYCLOAK-2174 javax/mail not found for DefaultEmailSenderProviderFactory
2015-12-01 14:33:28 +01:00
Stian Thorgersen f9b89df326 KEYCLOAK-2175
WildFly server overlay includes aesh/main as well as aesh/0.65
2015-12-01 14:32:05 +01:00
Stian Thorgersen 778a96c9e4 KEYCLOAK-2173 No such method on Infinispan on EAP6 2015-12-01 13:54:17 +01:00
Stian Thorgersen f6f6b6a258 KEYCLOAK-2174 javax/mail not found for DefaultEmailSenderProviderFactory 2015-12-01 13:49:22 +01:00
vramik c4f3bd3dda Merge upstream/master 2015-12-01 12:51:57 +01:00
Marek Posolda 9d5356a001 Merge pull request #1910 from mposolda/master
KEYCLOAK-2149 Fix possible NPE during migration
2015-12-01 12:35:27 +01:00
mposolda 32fb604c88 KEYCLOAK-2149 Fix possible NPE during migration 2015-12-01 11:41:32 +01:00
Marek Posolda b3ea8f3add Merge pull request #1909 from mposolda/master
KEYCLOAK-2171 Fix broker test with MySQL and Sybase
2015-12-01 10:04:57 +01:00
mposolda 382161c425 KEYCLOAK-2171 Fix broker test with MySQL and Sybase 2015-12-01 09:20:18 +01:00
Marek Posolda ec527da868 Merge pull request #1908 from mposolda/master
KEYCLOAK-1129 Implicit flow docs
2015-12-01 00:00:40 +01:00
mposolda 0038c1ce9a KEYCLOAK-1129 Implicit flow docs 2015-11-30 23:59:09 +01:00
Marek Posolda d8fb0f1540 Merge pull request #1906 from mposolda/master
KEYCLOAK-2167 EmailAsUsername not reflected during registration throu…
2015-11-30 23:45:41 +01:00
Bill Burke 866c11b25b Merge pull request #1907 from patriot1burke/master
KEYCLOAK-2059
2015-11-30 17:42:35 -05:00
Bill Burke 64f5d032ed KEYCLOAK-2059 2015-11-30 17:40:35 -05:00
mposolda 635310123e KEYCLOAK-2167 EmailAsUsername not reflected during registration through broker 2015-11-30 22:46:34 +01:00
Marek Posolda 0bf53ad0ab Merge pull request #1905 from mposolda/master
Minor fixes
2015-11-30 20:58:26 +01:00
mposolda bf7863b300 Minor fixes 2015-11-30 20:18:36 +01:00
Marek Posolda 07e12f3b5f Merge pull request #1904 from mposolda/master
Fixes
2015-11-30 20:05:46 +01:00
mposolda 0f3d2bbfb4 KEYCLOAK-2149 DB fixes. firstBrokerLogin migration 2015-11-30 18:57:31 +01:00
Tomas Kyjovsky ed30c4454a Increased arquillian timeouts for travis. 2015-11-30 17:09:57 +01:00
Tomas Kyjovsky 0d4771a763 Merge upstream-master 2015-11-30 16:48:25 +01:00
Tomas Kyjovsky a8317e0cc2 1) Pageload timeout set to 60s. Other timeouts set by arq props in arquillian.xml 2) Refactoring: FlashMessage --> AdminConsoleAlert and AccountManagementAlert 2015-11-30 16:43:18 +01:00
mposolda 5b61a10b55 KEYCLOAK-2061 Direct Access Grants disabled by default 2015-11-30 15:56:21 +01:00
mposolda ec327c99f4 KEYCLOAK-2152 KEYCLOAK-2061 Client switches changes. Support for response_types and grant_types in OIDC Client registration 2015-11-30 15:31:38 +01:00
Stian Thorgersen 0492d84b59 Merge pull request #1902 from stianst/master
KEYCLOAK-2158
2015-11-30 15:22:33 +01:00
vramik 6a7a823fb4 merge upstream/master 2015-11-30 14:59:44 +01:00
Bill Burke f394e2552a Merge pull request #1798 from girirajsharma/Keycloak-2044
[KEYCLOAK-2044] Cannot map multiple external roles into Keycloak roles through custom OIDC Identity Provider
2015-11-30 08:42:03 -05:00
Stian Thorgersen 5a686c4260 KEYCLOAK-2158
Add add-user-keycloak.sh to server overlays
2015-11-30 14:03:54 +01:00
Stian Thorgersen 642e93be93 Merge pull request #1901 from mstruk/adapter-install-cli
KEYCLOAK-2166 Name clash of bin/adapter-install.cli in adapter-dist and saml-adapter-dist
2015-11-30 13:52:41 +01:00
Stian Thorgersen 2a6851b01f Merge pull request #1900 from stianst/KEYCLOAK-2063
KEYCLOAK-2063 Fix verify email link from admin endpoint
2015-11-30 13:17:17 +01:00
Marko Strukelj 2726db0be9 KEYCLOAK-2166 Name clash of bin/adapter-install.cli in adapter-dist and saml-adapter-dist 2015-11-30 12:53:51 +01:00
Stian Thorgersen 61c2ec04a4 Merge pull request #1898 from velias/KEYCLOAK-2164
KEYCLOAK-2164 - removed Cancel button from 'Change password' screen in Account app
2015-11-30 12:45:39 +01:00
Stian Thorgersen 8d6a1d5a1d Merge pull request #1899 from stianst/master
Exclude admin console tests from Travis due to stability issues
2015-11-30 12:44:29 +01:00
Stian Thorgersen 233b1e2553 KEYCLOAK-2063 Fix verify email link from admin endpoint 2015-11-30 12:10:45 +01:00
Stian Thorgersen 956ea431c8 Merge pull request #1897 from mstruk/npe
KEYCLOAK-2039 NPE on startup if keycloak-server.json can't be found
2015-11-30 11:44:56 +01:00
Stian Thorgersen 265b6d5e2a Exclude admin console tests from Travis due to stability issues 2015-11-30 11:29:59 +01:00
Vlastimil Elias b22c28b20e KEYCLOAK-2164 - removed Cancel button from 'Change password' screen in
Account app
2015-11-30 11:05:22 +01:00
Stian Thorgersen 243acdd04e Merge pull request #1889 from stianst/KEYCLOAK-2131-VAL-MAP-NAME
KEYCLOAK-2131 Create mapper form doesn't validate name input
2015-11-30 10:55:33 +01:00
Stian Thorgersen c49394c308 Merge pull request #1888 from stianst/KEYCLOAK-2132-ROLE-SELECTOR
KEYCLOAK-2132
2015-11-30 10:51:44 +01:00
Marko Strukelj fd5cb84dd1 KEYCLOAK-2039 NPE on startup if keycloak-server.json can't be found
- fix NPE and throw RuntimeException if config file not found
2015-11-30 10:26:39 +01:00
Stian Thorgersen 54b5a6c41e Merge pull request #1896 from vramik/authFlows
arquillian-testsuite: auth flows tests
2015-11-30 09:52:12 +01:00
Stian Thorgersen 83fa03e8cc Merge pull request #1894 from mstruk/saml-subsystem
KEYCLOAK-1924 SAML adapter full subsystem EAP/Wildfly
2015-11-30 09:51:33 +01:00
Stian Thorgersen 6863b711e3 Merge pull request #1892 from gtudan/KEYCLOAK-2163
KEYCLOAK-2163: require user-admin role for clearing brute force detection status
2015-11-30 09:50:59 +01:00
Stian Thorgersen 2c5510284d Merge pull request #1891 from mstruk/wildfly-modules-rename
KEYCLOAK-2099 WildFly 10 adapter subsystem
2015-11-30 09:48:15 +01:00
Stian Thorgersen 96cfb895db Merge pull request #1890 from stianst/KEYCLOAK-2137-ROLE-NAME-MAP-DUP
Keycloak 2137 role name map dup
2015-11-30 09:47:23 +01:00
Gregor Tudan 46f947113c KEYCLOAK-2163: require user admin role for clearing bruteforce detection status 2015-11-30 08:56:26 +01:00
Marek Posolda fa4e32ddcb Merge pull request #1895 from mposolda/master
Implicit flow and hybrid flow. Client switches.
2015-11-28 09:02:52 +01:00
mposolda 57b60797ce KEYCLOAK-1129 Implicit flow: more work 2015-11-28 00:15:41 +01:00
Marko Strukelj 38d160fab2 KEYCLOAK-1924 SAML adapter full subsystem EAP/Wildfly 2015-11-27 22:49:35 +01:00
mposolda ef80b64d1c KEYCLOAK-1129 Implicit flow and Hybrid flow support 2015-11-27 22:28:38 +01:00
mposolda 8d2e4c0316 KEYCLOAK-2061 Add switches to enable/disable grant types for clients 2015-11-27 22:28:38 +01:00
Bill Burke ae83ad258b Merge pull request #1893 from patriot1burke/master
KEYCLOAK-2058
2015-11-27 15:27:08 -05:00
Bill Burke 5fa59262ce fix saml admin console 2015-11-27 15:24:56 -05:00
Marko Strukelj 373fc23fc0 KEYCLOAK-2099 WildFly 10 adapter subsystem 2015-11-27 20:46:20 +01:00
Stian Thorgersen 58dc8776d6 KEYCLOAK-2137 Select mapperTypeCreate contains Role Name Mapper twice 2015-11-27 16:13:50 +01:00
Stian Thorgersen 20212d8d70 KEYCLOAK-2131 Create mapper form doesn't validate name input 2015-11-27 16:01:22 +01:00
Stian Thorgersen cb20d360c4 KEYCLOAK-2132
Error message is not displyed when trying to select empty role.
2015-11-27 15:53:33 +01:00
Stian Thorgersen 8e127bf699 Merge pull request #1887 from stianst/KEYCLOAK-2111
KEYCLOAK-2111 Cannot select language on Login dialog on small resolution
2015-11-27 15:39:13 +01:00
Stian Thorgersen 4d24a874f9 KEYCLOAK-2111 Cannot select language on Login dialog on small resolution 2015-11-27 14:42:37 +01:00
Stian Thorgersen 7200996ae0 Merge pull request #1886 from stianst/master
KEYCLOAK-2156
2015-11-27 12:32:07 +01:00
Stian Thorgersen 34cc750b13 KEYCLOAK-2156
Unrecognized field identityFederationEnabled importing old realm json
2015-11-27 12:31:00 +01:00
Stian Thorgersen 0ad6d708da Merge pull request #1884 from stianst/KEYCLOAK-2106-JWT-FIX
KEYCLOAK-2106 HTTP 500 for unparsable refresh tokens
2015-11-27 10:54:08 +01:00
Stian Thorgersen c83e3bd2d1 KEYCLOAK-2106 HTTP 500 for unparsable refresh tokens 2015-11-27 08:59:23 +01:00
Stian Thorgersen 5ea880cfff Merge pull request #1880 from stianst/KEYCLOAK-2129-USRCACHE
KEYCLOAK-2139
2015-11-26 21:14:08 +01:00
Stian Thorgersen 4276328794 Merge pull request #1883 from stianst/KEYCLOAK-2147-FF
KEYCLOAK-2147
2015-11-26 21:07:46 +01:00
Stian Thorgersen 7c4c77d70e KEYCLOAK-2147 2015-11-26 20:24:33 +01:00
Stian Thorgersen 632216d53f KEYCLOAK-2144 Set locale cookie to http-only 2015-11-26 20:06:05 +01:00
Stian Thorgersen d5105164e9 Merge pull request #1882 from abstractj/KEYCLOAK-2048
KEYCLOAK-2148: Update HmacOTP to make use of SecureRandom
2015-11-26 19:40:52 +01:00
Stian Thorgersen 7a9e2db18f Merge pull request #1879 from abstractj/KEYCLOAK-2136
KEYCLOAK-2136: Unexpected error when trying to create mapper with aleady existing name
2015-11-26 19:40:04 +01:00
Bruno Oliveira 0d582a1326 KEYCLOAK-2148: Update HmacOTP to make use of SecureRandom 2015-11-26 15:53:56 -02:00
Bruno Oliveira a99df49bc9 KEYCLOAK-2136: Unexpected error when trying to create mapper with already existing name 2015-11-26 13:55:10 -02:00
Stian Thorgersen b996e88dbd KEYCLOAK-2139
UserCache invalidation does not work proper
2015-11-26 16:39:06 +01:00
Stian Thorgersen 426a2b46fc Merge pull request #1877 from stianst/KEYCLOAK-2129
KEYCLOAK-2129
2015-11-26 15:33:39 +01:00
Stian Thorgersen 4a020d545b Merge pull request #1876 from stianst/KEYCLOAK-2082
KEYCLOAK-2082
2015-11-26 12:43:05 +01:00
Stian Thorgersen ee363a4c56 KEYCLOAK-2129 2015-11-26 12:41:55 +01:00
Stian Thorgersen bf4d5f4df9 KEYCLOAK-2082
Cross site scripting issues
2015-11-26 10:12:43 +01:00
Stian Thorgersen 30ec60b4e2 Merge pull request #1849 from girirajsharma/KEYCLOAK-2117
[KEYCLOAK-2117] It is possible to add a user or group attribute with an empty key
2015-11-26 09:25:49 +01:00
Stian Thorgersen a744ecba9e Merge pull request #1875 from abstractj/KEYCLOAK-2057
KEYCLOAK-2057: DB error with JPA EventStore and long value of not-existing client
2015-11-26 09:25:08 +01:00
Stian Thorgersen e764461b1a Merge pull request #1874 from stianst/KEYCLOAK-2134-IFRAME
KEYCLOAK-2134 login-status-iframe.html without any parameter throws 5…
2015-11-26 08:19:28 +01:00
Bruno Oliveira f376facb48 KEYCLOAK-2057: DB error with JPA EventStore and long value of not-existing client 2015-11-26 01:32:05 -02:00
girirajsharma 31614df7c4 [KEYCLOAK-2117] It is possible to add a user or group attribute with an empty key 2015-11-26 00:41:19 +05:30
Stian Thorgersen 335f852600 Merge pull request #1869 from stianst/EMAIL
Email fixes
2015-11-25 20:05:45 +01:00
Stian Thorgersen c26aeb654b KEYCLOAK-2134 login-status-iframe.html without any parameter throws 500 with NullpointerException 2015-11-25 19:58:46 +01:00
Stian Thorgersen 969cc6eb9e Merge pull request #1873 from stianst/master
Ignore LdapUserFederationTest#invalidSettingsTest
2015-11-25 19:58:17 +01:00
Stian Thorgersen f5326e1f42 Ignore LdapUserFederationTest#invalidSettingsTest 2015-11-25 19:57:31 +01:00
Stian Thorgersen e664a4a6b2 Merge pull request #1868 from stianst/KEYCLOAK-2043
KEYCLOAK-2043 Set cache-control header in well-known endpoints
2015-11-25 19:55:45 +01:00
Stian Thorgersen c15571f65c Merge pull request #1866 from mhajas/master
Added ConfigTest to integration arquillian testsuite
2015-11-25 19:06:54 +01:00
Stian Thorgersen 1eacdc6904 KEYCLOAK-2043 Set cache-control header in well-known endpoints 2015-11-25 18:58:44 +01:00
Stian Thorgersen be040eaa18 KEYCLOAK-2133 KEYCLOAK-1782 2015-11-25 18:58:05 +01:00
Bill Burke 889679c715 Merge pull request #1872 from patriot1burke/master
KEYCLOAK-1970
2015-11-25 12:01:51 -05:00
Bill Burke 8ae3551c4d KEYCLOAK-1970 2015-11-25 12:01:28 -05:00
Bill Burke cfd4de033b Merge pull request #1871 from patriot1burke/master
2115 and 2114
2015-11-25 12:00:34 -05:00
Bill Burke d6e2bccb16 Merge pull request #1840 from velias/KEYCLOAK-2075
KEYCLOAK-2075 KEYCLOAK-2107 - support for SAML IsPassive mode
2015-11-25 10:35:00 -05:00
Bill Burke eeec89583e Merge remote-tracking branch 'upstream/master' 2015-11-25 10:18:37 -05:00
Bill Burke d2bdb74fef Merge pull request #1870 from patriot1burke/master
KEYCLOAK-2095
2015-11-25 10:18:15 -05:00
Bill Burke b04b124351 KEYCLOAK-2114 2015-11-25 10:13:44 -05:00
Bill Burke 067cb120f8 KEYCLOAK-2115 2015-11-25 09:58:57 -05:00
Bill Burke 0bab4e63fa KEYCLOAK-2095 2015-11-25 09:52:11 -05:00
Bill Burke b48f32380c Merge pull request #1867 from ramirost/feature/locale_ca
Added Catalan translations
2015-11-25 08:58:27 -05:00
Bill Burke 0c8f3f734d Merge pull request #1855 from Smartling/KEYCLOAK-1391
KEYCLOAK-1391: Return an HTTP 401 for API requests
2015-11-25 08:57:05 -05:00
Bill Burke 4f401c7547 Merge pull request #1848 from girirajsharma/KEYCLOAK-2121
[KEYCLOAK-2121] Adding user or group attributes using ENTER key deletes first attribute
2015-11-25 08:53:42 -05:00
Bill Burke df74338cbc Merge pull request #1850 from girirajsharma/KEYCLOAK-2113
[KEYCLOAK-2113] Cannot delete group
2015-11-25 08:52:26 -05:00
Vlastimil Elias e3060e5e58 rebased to latest master 2015-11-25 13:46:29 +01:00
Ramiro Sánchez 15309a94cc Added Catalan translations 2015-11-25 09:48:53 +01:00
vramik 2e39221b98 added UI tests for clients 2015-11-25 09:27:23 +01:00
Stian Thorgersen c05e21c049 Merge pull request #1863 from stianst/KEYCLOAK-2050
KEYCLOAK-2050 KEYCLOAK-2051 Fix notifications
2015-11-25 09:08:00 +01:00
mhajas 62d519ed37 fix phantomjs problem with ConfigTest 2015-11-25 08:42:41 +01:00
Vlastimil Elias 18fa03bf97 KEYCLOAK-2107 - support IsPassive mode in SAML SP adapter library
KEYCLOAK-2075 - added integration tests for both server and adapter side
2015-11-25 08:39:55 +01:00
Vlastimil Elias 0bdb05e152 KEYCLOAK-2075 - support for IsPassive mode in SAML IdP endpoint 2015-11-25 08:29:46 +01:00
mhajas 09af45201b Merge remote-tracking branch 'upstream/master' 2015-11-25 07:36:32 +01:00
Stian Thorgersen dd85c125cb KEYCLOAK-2050 KEYCLOAK-2051 Fix notifications 2015-11-25 07:28:27 +01:00
Stian Thorgersen 274838aa64 Merge pull request #1860 from stianst/KEYCLOAK-2118
KEYCLOAK-2118 OTP Policy form doesn't remember Number of Digits
2015-11-25 06:59:17 +01:00
Stian Thorgersen ecb39cda0c Merge pull request #1865 from ramirost/feature/locale_es
Feature/locale es
2015-11-25 06:58:36 +01:00
Stian Thorgersen 3685a185d4 Merge pull request #1859 from stianst/reset-pass
KEYCLOAK-1758 add-user script
2015-11-25 06:56:35 +01:00
Bill Burke 030a35476a Merge pull request #1864 from patriot1burke/master
sendError() handling
2015-11-24 18:46:59 -05:00
Ramiro Sánchez 4ffe86583b fixed Spanish translations 2015-11-25 00:17:09 +01:00
Ramiro Sánchez 24f765ceef Merge branch 'upstream/master' into fork/master
* upstream_master: (115 commits)
  KEYCLOAK-1964 Database field for passwordPolicy is too small
  KEYCLOAK-1971 REST end point does't validate password policies properly
  KEYCLOAK-2104 Add caching of message bundles and properties to ExtendingThemeManager
  KEYCLOAK-2116 - Fix Label of Regenerate Secret button.
  Tweak Travis again
  KEYCLOAK-1937 OpenID Connect Dynamic Client Registration
  fix null pointer
  remove empty password check in direct grant flow
  Updated Travis configuration
  Exclude .lastUpdated files from Travis cache
  KEYCLOAK-2119 OTP Policy form validates both TOTP and HOTP at the same time
  [KEYCLOAK-2119] OTP Policy form validates both TOTP and HOTP at the same time
  KEYCLOAK-2010
  remove empty password check
  default groups ui
  KEYCLOAK-1749 Add documentation and fixed clean-up of expired initial access tokens
  Remove unused import
  Fix missing group in angular $scope in GroupMembersCtrl.
  arquillian-testsuite: Customizable waiting timeouts in class WaitUtils. Changed time unit to MILLISECONDS.
  default groups
  ...
2015-11-24 23:52:24 +01:00
Bill Burke c729835c3e fix2 2015-11-24 17:25:05 -05:00
Bill Burke 507fa4c250 fix 2015-11-24 17:21:30 -05:00
Bill Burke bba781beee messed up 2015-11-24 17:19:55 -05:00
Bill Burke 980a1eca5e Merge remote-tracking branch 'upstream/master' 2015-11-24 16:48:40 -05:00
Bill Burke ff63c5552a sendError() handling' 2015-11-24 16:48:24 -05:00
Stian Thorgersen 985661c1b9 Merge pull request #1862 from stianst/KEYCLOAK-1964
KEYCLOAK-1964 Database field for passwordPolicy is too small
2015-11-24 22:04:52 +01:00
Stian Thorgersen b168656eab KEYCLOAK-2118 OTP Policy form doesn't remember Number of Digits 2015-11-24 22:04:37 +01:00
Stian Thorgersen 94ba87ac05 Merge pull request #1861 from stianst/KEYCLOAK-1971
KEYCLOAK-1971 REST end point does't validate password policies properly
2015-11-24 21:55:16 +01:00
Stian Thorgersen cfc28b861b KEYCLOAK-1758 add-user script 2015-11-24 21:54:58 +01:00
Stian Thorgersen 38408658f9 Merge pull request #1857 from thomasdarimont/issue/KEYCLOAK-2116
KEYCLOAK-2116 - Fix Label of Regenerate Secret button.
2015-11-24 21:23:44 +01:00
Stian Thorgersen 998bb9986f Merge pull request #1853 from stianst/KEYCLOAK-2104
KEYCLOAK-2104 Add caching of message bundles and properties to Extend…
2015-11-24 21:22:02 +01:00
Stian Thorgersen 8d2a95d66b KEYCLOAK-1964 Database field for passwordPolicy is too small 2015-11-24 20:57:41 +01:00
Stian Thorgersen 500bced6ee KEYCLOAK-1971 REST end point does't validate password policies properly 2015-11-24 20:50:41 +01:00
Stian Thorgersen 81960a6996 KEYCLOAK-2104 Add caching of message bundles and properties to ExtendingThemeManager 2015-11-24 20:23:20 +01:00
Stian Thorgersen ccd456dba6 Merge pull request #1858 from stianst/master
Tweak Travis again
2015-11-24 20:23:14 +01:00
Thomas Darimont bac39bc71e KEYCLOAK-2116 - Fix Label of Regenerate Secret button. 2015-11-24 20:11:55 +01:00
Stian Thorgersen a8c2e79565 Tweak Travis again 2015-11-24 20:08:41 +01:00
Marek Posolda d6089597ff Merge pull request #1847 from gerbermichi/password
remove empty password check
2015-11-24 17:23:51 +01:00
Stian Thorgersen c901fc7480 Merge pull request #1845 from stianst/client-reg
Client reg
2015-11-24 16:33:55 +01:00
Stian Thorgersen 4f2b97de7f KEYCLOAK-1937
OpenID Connect Dynamic Client Registration

KEYCLOAK-1938
Register clients from SAML Entity Descriptors
2015-11-24 15:39:36 +01:00
Michael Gerber 9a3e023c43 fix null pointer 2015-11-24 13:54:33 +00:00
Michael Gerber 142ef50728 remove empty password check in direct grant flow 2015-11-24 11:11:16 +00:00
Stian Thorgersen d2ba4669ab Merge pull request #1856 from stianst/master
Updated Travis configuration
2015-11-24 10:57:08 +01:00
Stian Thorgersen ba0b59bfd0 Updated Travis configuration 2015-11-24 10:00:58 +01:00
Scott Rossillo f1c3295cec KEYCLOAK-1391: Return an HTTP 401 for API requests
Non browser HTTP requests shouldn't redirect to the Keycloak login
page. Instead, return an HTTP 401 with a proper WWW-Authenticate
header.
2015-11-23 10:46:14 -05:00
Stian Thorgersen 04ddf7ba4d Merge pull request #1854 from stianst/master
Exclude .lastUpdated files from Travis cache
2015-11-23 14:01:46 +01:00
mhajas 8f346a5f59 Merge remote-tracking branch 'origin/master' 2015-11-23 13:12:23 +01:00
mhajas 22e3abdaa8 added ConfigTest for events 2015-11-23 13:11:55 +01:00
Stian Thorgersen f1af3e9fb7 Exclude .lastUpdated files from Travis cache 2015-11-23 13:08:13 +01:00
Stian Thorgersen 5e479ba4df Merge pull request #1852 from stianst/master
KEYCLOAK-2119
2015-11-23 12:48:16 +01:00
Stian Thorgersen f6743eff69 KEYCLOAK-2119
OTP Policy form validates both TOTP and HOTP at the same time
2015-11-23 12:02:39 +01:00
Stian Thorgersen 5a761f2f3a Merge pull request #1851 from girirajsharma/KEYCLOAK-2119
[KEYCLOAK-2119] OTP Policy form validates both TOTP and HOTP at the same time
2015-11-23 11:59:00 +01:00
Stian Thorgersen 261d32f8e7 Merge pull request #1841 from vramik/master
arquillian-testsuite: Customizable waiting timeouts in class WaitUtil…
2015-11-23 11:26:22 +01:00
Stian Thorgersen 282e702ef6 Merge pull request #1836 from tkyjovsk/master
KEYCLOAK-1646 Added adapter test module for EAP6
2015-11-23 11:23:29 +01:00
Stian Thorgersen cc014fe0e5 Merge pull request #1844 from lkubik/unusedImport
Remove unused import
2015-11-23 11:21:13 +01:00
girirajsharma 95f62901c2 [KEYCLOAK-2119] OTP Policy form validates both TOTP and HOTP at the same time 2015-11-22 23:04:45 +05:30
girirajsharma cf8b0abaad [KEYCLOAK-2113] Cannot delete group 2015-11-22 20:52:31 +05:30
girirajsharma e761fb24e6 [KEYCLOAK-2121] Adding user or group attributes using ENTER key deletes first attribute 2015-11-22 16:14:34 +05:30
Bill Burke b1deed67df Merge remote-tracking branch 'upstream/master' 2015-11-21 08:58:15 -05:00
Bill Burke d3cadc9a47 saml error handling 2015-11-21 08:58:02 -05:00
Bill Burke 32e069eadc Merge pull request #1846 from patriot1burke/master
default groups UI
2015-11-20 19:18:21 -05:00
Bill Burke 17c97c2f68 KEYCLOAK-2010 2015-11-20 16:18:42 -05:00
Bill Burke 48bb4d86e0 Merge pull request #1842 from thomasdarimont/issue/missing-groupid-membersctrl
Fix missing group in angular $scope in GroupMembersCtrl.
2015-11-20 16:07:37 -05:00
Michael Gerber eda018ba0a remove empty password check 2015-11-20 18:42:56 +01:00
Bill Burke ac1baa059f Merge pull request #1797 from raehalme/KEYCLOAK-2041
KEYCLOAK-2041 Use sendError instead of setStatus to report errors
2015-11-20 11:50:37 -05:00
Bill Burke 670b620da7 Merge remote-tracking branch 'upstream/master' 2015-11-20 10:41:19 -05:00
Bill Burke 1545593cde default groups ui 2015-11-20 10:41:08 -05:00
Stian Thorgersen aedd23a43d Merge pull request #1843 from stianst/client-reg
KEYCLOAK-1749 Add documentation and fixed clean-up of expired initial…
2015-11-19 19:58:42 +01:00
Stian Thorgersen 7e8c80c0df KEYCLOAK-1749 Add documentation and fixed clean-up of expired initial access tokens 2015-11-19 16:11:41 +01:00
Lukas Kubik 9f6813fcad Remove unused import 2015-11-19 15:15:55 +01:00
Thomas Darimont 14292843ff Fix missing group in angular $scope in GroupMembersCtrl.
Previously navigating to the group members tab of a group breaks other groups links (RoleMappings, Attributes etc.) because the groupId part of the url is missing.
 One sees:
 /auth/admin/master/console/#/realms/master/groups//role-mappings
 Instead of:
 /auth/admin/master/console/#/realms/master/groups/0f77aeed-7d16-4938-9fcc-c74b1125e5e0/role-mappings
2015-11-19 13:54:18 +01:00
vramik 71e25bcd65 arquillian-testsuite: Customizable waiting timeouts in class WaitUtils. Changed time unit to MILLISECONDS. 2015-11-19 13:14:30 +01:00
Bill Burke 9f1fa5ebb9 Merge pull request #1839 from patriot1burke/master
default groups back end
2015-11-18 20:59:46 -05:00
Bill Burke 98958a2bc4 default groups 2015-11-18 19:40:30 -05:00
Bill Burke 7da9f8085d Merge pull request #1838 from patriot1burke/master
groups: resolve roles, and mongo fixes
2015-11-18 16:19:17 -05:00
Bill Burke 6989589e72 Merge remote-tracking branch 'upstream/master' 2015-11-18 15:24:45 -05:00
Bill Burke 4f00f6cceb group mongo 2015-11-18 15:24:27 -05:00
Stian Thorgersen 95e729b0b7 Merge pull request #1832 from stianst/client-reg
KEYCLOAK-2085
2015-11-18 19:34:47 +01:00
Tomas Kyjovsky 38c460de82 KEYCLOAK-1646 Added module for adapter tests on EAP6. Using 'wildfly-arquillian-container-managed' instead of 'jboss-as-arquillian-container-managed' for both EAP6 and AS7 adapter tests. 2015-11-18 18:21:46 +01:00
Bill Burke 41331111da resolve conflicts 2015-11-18 09:39:19 -05:00
Bill Burke bff334d365 group token/assertion and tests 2015-11-18 09:36:47 -05:00
Stian Thorgersen 41c9289f14 KEYCLOAK-1749 Moved clien registration api 2015-11-18 15:09:32 +01:00
Marek Posolda 1d06d9dd64 Merge pull request #1834 from mposolda/master
KEYCLOAK-2102 added AbstractKerberosTest.caseInsensitiveTest
2015-11-18 14:05:46 +01:00
Stian Thorgersen ec9b2933cc Merge pull request #1833 from thomasdarimont/issue/KEYCLOAK-2101
KEYCLOAK-2101 - Ensure consistent property order in json configuration export.
2015-11-18 13:30:15 +01:00
Stian Thorgersen 1ff5d6eb06 KEYCLOAK-2085 Internationalization in client initial access controller 2015-11-18 13:25:08 +01:00
mposolda bc22abf8cb KEYCLOAK-2102 added AbstractKerberosTest.caseInsensitiveTest 2015-11-18 12:35:17 +01:00
Marek Posolda 81eb1e1e30 Merge pull request #1830 from bagges/master
[KEYCLOAK-2102] treat principal name case insensitive
2015-11-18 12:35:06 +01:00
Stian Thorgersen e8cb3a416d KEYCLOAK-2085 Added initial access token support to admin console 2015-11-18 10:33:27 +01:00
Stian Thorgersen 764c20d748 KEYCLOAK-2085 Initial access tokens for client registration 2015-11-18 10:33:24 +01:00
Thomas Darimont c81d0c0898 KEYCLOAK-2101 - Ensure consistent order for properties in json configuration export.
We now explicitly order the AuthenticatorFlows, AuthenticatorConfig, as well
as RequiredActions to ensure a consistent order for the configuration export to make
it easier to diff / version keycloak configuration files.
Previously the order of the json properties of an configuration export were
non deterministic. The configuration file could look partially different after a
 export, import, export sequence even if no changes were made.
2015-11-17 22:34:21 +01:00
Stian Thorgersen 67fca8f1f3 Merge pull request #1831 from abstractj/KEYCLOAK-2100
KEYCLOAK-2100: 500 Internal Server Error with Update the events provider via Admin REST API
2015-11-17 20:35:48 +01:00
Bruno Oliveira 22c5c803ca KEYCLOAK-2100: 500 Internal Server Error with Update the events provider via Admin REST API 2015-11-17 14:04:24 -02:00
Stian Thorgersen f6d716a386 Merge pull request #1829 from stianst/client-reg
KEYCLOAK-1749 Rotate registration access token, add registration acce…
2015-11-17 13:29:53 +01:00
Stian Thorgersen 62c5bc0e91 KEYCLOAK-1749 Rotate registration access token, add registration access token to admin console 2015-11-17 09:44:50 +01:00
Markus Backes 5e329d7b29 Merge branch 'master' of https://github.com/keycloak/keycloak 2015-11-17 09:32:41 +01:00
Markus Backes 1bd9b18803 treat principal name case insensitive
* Kerberos login with active directory failed with invalid username or password because AD treats principal names in a case insensitive way (https://ssimo.org/blog/id_016.html)
2015-11-17 09:32:14 +01:00
Stian Thorgersen 96fe4269ec Merge pull request #1828 from abstractj/KEYCLOAK-2065
KEYCLOAK-2065: Update the client via Admin REST API causes 500 Internal Server Error
2015-11-17 08:31:54 +01:00
Stian Thorgersen 83ff02ea53 Merge pull request #1825 from stianst/client-reg
KEYCLOAK-1749 Client registration service
2015-11-16 20:23:55 +01:00
Stian Thorgersen 1df741a307 Merge pull request #1826 from lkubik/changeAllJettyToProvided
KEYCLOAK-2081
2015-11-16 20:23:31 +01:00
Bruno Oliveira 409356f734 KEYCLOAK-2065: Update the client via Admin REST API causes 500 Internal Server Error 2015-11-16 16:32:52 -02:00
Stian Thorgersen bad0a95123 KEYCLOAK-1749 Client registration service
Changed endpoints of client registration to just clients

Started installation

Added adapter config retrival to client reg
2015-11-16 13:24:56 +01:00
Stian Thorgersen 1bc08fff16 Merge pull request #1823 from abstractj/KEYCLOAK-2056
KEYCLOAK-2056: Removal of file model provider
2015-11-16 08:33:56 +01:00
Marek Posolda ab436705c8 Merge pull request #1827 from mposolda/broker-reauthentication
KEYCLOAK-1750 First broker login - migration, documentation. Other minor fixes
2015-11-13 20:10:28 +01:00
mposolda ea7709a104 KEYCLOAK-2026 Fix realm.getMasterAdminClient() in JPA and Mongo models 2015-11-13 18:51:09 +01:00
mposolda 1d5a01577e KEYCLOAK-1750 First broker login - migration 2015-11-13 18:51:09 +01:00
mposolda 4288260aa6 KEYCLOAK-1822 Don't redirect to login theme when error during link identity in account mgmt. 2015-11-13 18:51:09 +01:00
mposolda 600d1f8a56 KEYCLOAK-1750 First broker login - docs 2015-11-13 18:51:09 +01:00
Bruno Oliveira f7b1af7e11 Removal of module keycloak-connections-file 2015-11-13 13:44:15 -02:00
Bruno Oliveira 4b0e33e388 KEYCLOAK-2056: Removal of file model provider 2015-11-13 13:44:15 -02:00
Stian Thorgersen 8caaabb2e5 Merge pull request #1820 from thomasdarimont/issue/KEYCLOAK-2068-NPE-in-KeycloakOidcFilter
KEYCLOAK-2068 - Fix Potential NPE when using Servlet-Filter Adapter.
2015-11-13 16:00:34 +01:00
Stian Thorgersen 1bd0e23f31 Merge pull request #1824 from bystrikhorvath/master
KEYCLOAK-2077: correcting paths in custom-attributes.xml
2015-11-13 15:53:31 +01:00
Lukas Kubik 13a52c1bb2 KEYCLOAK-2081
Change scope of jetty dependencies to provided
2015-11-13 15:43:11 +01:00
Bill Burke fa7a7d35a9 Merge remote-tracking branch 'upstream/master' 2015-11-13 09:30:37 -05:00
Bill Burke fe5809db4d token group roles 2015-11-13 09:30:25 -05:00
Bill Burke 1510d9672a Merge pull request #1803 from gerbermichi/user
KEYCLOAK-2024 - username guessing
2015-11-13 08:53:05 -05:00
Bill Burke 9b93468131 Merge pull request #1818 from patriot1burke/master
group membership ui
2015-11-13 08:49:23 -05:00
bystrikhorvath 2e16a55815 KEYCLOAK-2077: correcting paths in custom-attributes.xml 2015-11-13 14:00:20 +01:00
Marek Posolda f65665b5eb Merge pull request #1822 from mposolda/broker-reauthentication
KEYCLOAK-1750 first broker login - events and tests
2015-11-13 10:27:38 +01:00
mposolda ce4a865579 KEYCLOAK-1750 First broker login - tests 2015-11-13 09:32:46 +01:00
mposolda f2e4e67ba0 KEYCLOAK-1750 First broker login - events 2015-11-13 09:32:46 +01:00
Stian Thorgersen 37f1eaae0e Merge pull request #1821 from stianst/master
KEYCLOAK-2037 Update documentation
2015-11-13 09:04:17 +01:00
Stian Thorgersen 6c3a3517b8 KEYCLOAK-2037 Update documentation 2015-11-13 09:03:58 +01:00
Thomas Darimont c4416a25e0 KEYCLOAK-2068 - Fix Potential NPE when using Servlet-Filter Adapter.
When using the `org.keycloak.adapters.servlet.KeycloakOIDCFilter` a `NullPointerException`
can be thrown in the `org.keycloak.adapters.servlet.FilterSessionStore` within the `getParam`
method of the generated wrapper in `buildWrapper` when the `content-type` is not set.
Since the `content-type` is only used to parse the body. We just check whether the `body`
is `null` and if so avoid touching the `content-type` which prevents the NPE.

If the `body` is null we return an empty `MultivaluedHashMap` for the parameters.
2015-11-13 00:14:34 +01:00
Bill Burke 550f773293 Merge remote-tracking branch 'upstream/master' 2015-11-12 13:16:50 -05:00
Bill Burke d7ea66ad44 group membership ui 2015-11-12 13:16:30 -05:00
Bill Burke 2022a8d36b Merge pull request #1817 from patriot1burke/master
user group membership ui
2015-11-12 13:09:37 -05:00
Bill Burke 0d20e3c7ff Merge remote-tracking branch 'upstream/master' 2015-11-12 11:31:55 -05:00
Bill Burke 21119604c6 user group membership 2015-11-12 11:31:44 -05:00
Stian Thorgersen 973609d39b Merge pull request #1816 from stianst/master
KEYCLOAK-2066
2015-11-12 14:44:03 +01:00
Stian Thorgersen 77bccda7a4 KEYCLOAK-2066
View details on import client not working
2015-11-12 14:03:09 +01:00
Stian Thorgersen 0c9f0ea3e6 Merge pull request #1813 from vmuzikar/missing-ids
Add missing IDs to some UI elements; add POs to Client Mappers
2015-11-12 13:36:19 +01:00
Stian Thorgersen 73197332c4 Merge pull request #1814 from pdrozd/federation-tests
Add Federation tests for admin console.
2015-11-12 13:36:03 +01:00
Stian Thorgersen ee0dd7e200 Merge pull request #1815 from abstractj/KEYCLOAK-2064
KEYCLOAK-2064: Update pax-web to make use of SecureRandom
2015-11-12 13:35:33 +01:00
Bruno Oliveira 9203971809 KEYCLOAK-2064: Update pax-web to make use of SecureRandom 2015-11-12 09:46:45 -02:00
Pavel Drozd 4e7fe1de8d Add Federation tests for admin console. 2015-11-12 12:23:37 +01:00
Stian Thorgersen 4646a4aceb Merge pull request #1811 from stianst/master
KEYCLOAK-2060
2015-11-12 11:59:00 +01:00
Stian Thorgersen 64baa28301 Merge pull request #1810 from lkubik/updateJettyScope
Change scope of jetty dependencies in jetty-adapter-spi
2015-11-12 09:23:44 +01:00
Stian Thorgersen db84571546 Merge pull request #1807 from vramik/KEYCLOAK-2031
KEYCLOAK-2031: Input validation in OTP Policy page fix, test
2015-11-12 09:23:13 +01:00
Stian Thorgersen 99cddcef6c Merge pull request #1805 from velias/KEYCLOAK-2033
KEYCLOAK-2033 - Allow custom SPI Providers to show additional info on
2015-11-12 09:21:38 +01:00
Stian Thorgersen 1891019067 Merge pull request #1802 from equinux/pr/fix-js-parameter-encoding
Fix parameter encoding in JS adapter
2015-11-12 09:19:21 +01:00
Stian Thorgersen b0b4d26fa3 KEYCLOAK-2060
Upgrade to WildFly 9.0.2.Final
2015-11-12 09:17:47 +01:00
Bill Burke 6cc76b2e3d Merge pull request #1788 from patriot1burke/master
groups data model
2015-11-11 19:38:01 -05:00
Bill Burke 33ac048c8c resolve conflicts 2015-11-11 18:06:39 -05:00
Bill Burke e25157655b group ui 2015-11-11 18:03:53 -05:00
Stian Thorgersen 213abb87ba Merge pull request #1808 from stianst/master
KEYCLOAK-2055
2015-11-11 20:24:08 +01:00
Lukas Kubik 825a68c6c9 Change scope of jetty dependencies in jetty-adapter-spi. 2015-11-11 17:01:46 +01:00
Stian Thorgersen 816ed9419b Merge pull request #1809 from lkubik/unifyJettyVersionWithOthers
Unify jetty version in keycloak-jetty-adapter-spi with other jetty versions
2015-11-11 16:10:17 +01:00
Stian Thorgersen 15f1a38b51 KEYCLOAK-2055
Invalid links in docs index.html
2015-11-11 14:32:43 +01:00
Lukas Kubik 1f75f85a20 Unify jetty version in keycloak-jetty-adapter-spi with other versions 2015-11-11 13:58:22 +01:00
Vaclav Muzikar dfb39d13a2 Removed IDs from Password Policy
(cherry picked from commit 35376b7)
2015-11-11 12:00:44 +01:00
Bill Burke b8391e0935 Merge pull request #1778 from girirajsharma/keycloak-1994
[KEYCLOAK-1994] It's not possible to create flow with same name as deleted nested flow
2015-11-10 10:58:57 -05:00
vramik ab56460325 KEYCLOAK-2031: Input validation in OTP Policy page fix, test 2015-11-10 16:57:29 +01:00
Vaclav Muzikar 059ebacffc Removed IDs from redirect URIs and Web Origins in Client
(cherry picked from commit 5c68854)
2015-11-10 15:46:55 +01:00
Stian Thorgersen e1a07bd5a8 Merge pull request #1806 from tkyjovsk/karaf-fuse-update
Karaf fuse update
2015-11-10 15:28:36 +01:00
Tomas Kyjovsky 37d7182fc9 Merge upstream-master into karaf-fuse-update
Conflicts:
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java
2015-11-10 13:44:23 +01:00
Tomas Kyjovsky e1ba26bcae KEYCLOAK-1661 Added support for testing adapters/examples on fuse 6.2. Moved CustomKarafContainer from the base module to the adapters/karaf module. 2015-11-10 13:39:59 +01:00
Vlastimil Elias b39146f6f5 KEYCLOAK-2033 - Allow custom SPI Providers to show additional info on
Server Info page
2015-11-10 12:55:36 +01:00
Marek Posolda caea1a3458 Merge pull request #1804 from mposolda/broker-reauthentication
KEYCLOAK-1750 First broker login changes
2015-11-10 11:52:47 +01:00
Dominique d'Argent 7ef747e7c4 Fix parameter encoding in JS adapter
- fixes https://issues.jboss.org/browse/KEYCLOAK-2047
- relates to keycloak/keycloak-js-bower#7
2015-11-10 11:20:06 +01:00
mposolda 4ca442d1b2 KEYCLOAK-1750 Option updateProfileOnFirstLogin moved from IdentityProvider to IdpReviewProfile authenticator 2015-11-10 11:06:23 +01:00
mposolda 99e75c69a0 KEYCLOAK-1750 First broker login - support for change password after first social login 2015-11-10 10:25:31 +01:00
Michael Gerber 1437f7da35 KEYCLOAK-2024 - username guessing 2015-11-10 09:04:10 +01:00
Stian Thorgersen fa9abbf016 Merge pull request #1801 from vramik/KEYCLOAK-2046
KEYCLOAK-2046 Remove JIRA checker extension
2015-11-10 07:50:24 +01:00
vramik 6bce32ba62 arquillian-testsuite: auth flows test 2015-11-09 15:59:34 +01:00
vramik ee801c2c32 arquillian-testsuite: KEYCLOAK-2046 2015-11-09 15:03:17 +01:00
Marek Posolda 2b23497f92 Merge pull request #1799 from mposolda/broker-reauthentication
KEYCLOAK-1750 Improve first time login with social. Added 'first brok…
2015-11-09 13:15:33 +01:00
Stian Thorgersen 04ba5c235e Merge pull request #1800 from stianst/master
Disable JIRA checker extension - this should be removed completely
2015-11-09 13:05:04 +01:00
Stian Thorgersen 1521f56225 Disable JIRA checker extension - this should be removed completely 2015-11-09 12:11:20 +01:00
Stian Thorgersen 251adbba0b Fix OTPPolicyTest 2015-11-09 12:10:19 +01:00
mposolda adbf2b22ad KEYCLOAK-1750 Improve first time login with social. Added 'first broker login' flow 2015-11-09 10:34:55 +01:00
Stian Thorgersen 2b29c3acf4 Merge pull request #1795 from abstractj/KEYCLOAK-2031
Input validation in OTP Policy page
2015-11-09 10:08:38 +01:00
Stian Thorgersen 076690e21e Merge pull request #1794 from tkyjovsk/karaf-fuse-update
Adapter tests for Karaf: Fuse Example installation now done via JMX i…
2015-11-09 10:08:27 +01:00
Stian Thorgersen b586f93182 Merge pull request #1793 from stianst/KEYCLOAK-2037
KEYCLOAK-2037 Fix domain mode for server-dist
2015-11-09 10:08:03 +01:00
Stian Thorgersen 5a318df041 Merge pull request #1791 from vramik/uitests
arquillian-testsuite add UI tests, page objects refactoring
2015-11-09 10:02:23 +01:00
Stian Thorgersen cd01ea49b4 Merge pull request #1777 from girirajsharma/keycloak-1993
[KEYCLOAK-1993] It's possible to create new authentication flow with empty name within another flow
2015-11-09 09:54:07 +01:00
girirajsharma dd2824ab20 [KEYCLOAK-2044] Cannot map multiple external roles into Keycloak roles through custom OIDC Identity Provider 2015-11-08 20:10:14 +05:30
Bruno Oliveira 8db6972441 Input validation in OTP Policy page 2015-11-06 11:52:21 -02:00
Tomas Kyjovsky 027311c0c0 Adapter tests for Karaf: Fuse Example installation now done via JMX instead of maven-karaf plugin. Needed for testing on Fuse. 2015-11-06 13:03:42 +01:00
Thomas Raehalme 68edf9ce48 Errors are now reported using sendError instead of setStatus.
This change was made to enable the use of error pages defined in web.xml.
2015-11-06 10:53:18 +02:00
Thomas Raehalme 7b7fbd3257 Added sendError(int) to HttpFacade.Response. 2015-11-06 10:47:08 +02:00
Stian Thorgersen d0c50fe56d KEYCLOAK-2037 Fix domain mode for server-dist 2015-11-06 08:44:50 +01:00
girirajsharma 4075d65241 [KEYCLOAK-1993] It's possible to create new authentication flow with empty name within another flow 2015-11-05 21:59:04 +05:30
vramik 267be83863 arquillian-testsuite: add UI test for OTP Policy
Conflicts:
	testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/authentication/flows/CreateFlow.java
2015-11-05 13:37:59 +01:00
Stian Thorgersen 15828e899b Merge pull request #1790 from dvantooster/master
KEYCLOAK-2032 Changed some column names from lower- to uppercase
2015-11-05 13:03:20 +01:00
Stian Thorgersen ce089019e6 Merge pull request #1786 from mhajas/master
Add consent tests to integration-arquillian testsuite
2015-11-05 13:02:44 +01:00
Stian Thorgersen c9c49a9c64 Merge branch 'ramirost-feature/i18n_es' 2015-11-05 12:59:29 +01:00
Stian Thorgersen 623f39862d Merge branch 'feature/i18n_es' of https://github.com/ramirost/keycloak into ramirost-feature/i18n_es 2015-11-05 12:59:06 +01:00
Stian Thorgersen 818c3ab1c5 Merge pull request #1785 from ccheneau/master
Fix french translation for account and login resource bundles
2015-11-05 12:54:17 +01:00
Stian Thorgersen 1ce028ead7 Merge pull request #1789 from abstractj/pbeutils-removal
Removal of PBEUtils
2015-11-05 12:49:22 +01:00
Stian Thorgersen d844e6b4af Merge pull request #1776 from girirajsharma/keycloak-1995
[KEYCLOAK-1995] Replace provider select options with Labels displayed in flows table
2015-11-05 12:08:23 +01:00
vramik 7b4dcb6965 arquillian-testsuite: add UI test for Bindings flows 2015-11-04 18:14:41 +01:00
Daniël van 't Ooster 7bd0b7ddfc KEYCLOAK-2032 Changed some column names from lower- to uppercase, so it is in sync with liquibase scripts 2015-11-04 11:43:09 +01:00
Bruno Oliveira d2912673b0 Removal of PBEUtils 2015-11-04 02:06:21 -02:00
Stian Thorgersen 28ee95138a Merge pull request #1773 from iperdomo/master
KEYCLOAK-2016
2015-11-03 15:55:21 +01:00
Bill Burke d46b4eb5fe Merge pull request #1780 from agolPL/master
extract hardcoded keycloak configuration file name
2015-11-02 11:51:04 -05:00
Bill Burke 151c56a304 conflicts 2015-11-02 11:21:10 -05:00
Bill Burke c2ad918975 group model 2015-11-02 11:19:19 -05:00
Tomas Kyjovsky 634eadb634 Merge pull request #1787 from vramik/migration
arquillian-testsuite: Migration test
2015-11-02 15:36:18 +01:00
vramik d26cfcda42 arquillian testsuite, migration test: update execution of dependency plugin for migration scenario 2015-11-02 11:56:26 +01:00
vramik 4a9a39c08d arquillian testsuite, migration test: fix 2015-10-30 14:01:48 +01:00
vramik 9796b7f06e arquillian testsuite, migration test: initial version of migration test 2015-10-30 13:27:38 +01:00
vramik c2e14cb924 arquillian testsuite, migration test: fixed typo in arquillian.xml, add migration test for 1.5.1.Final 2015-10-30 11:32:01 +01:00
Bill Burke d896800ec6 groups initial 2015-10-29 16:33:02 -04:00
mhajas b74e0dad10 remove ConfigTest 2015-10-29 16:50:29 +01:00
mhajas 2c8b0fc3e1 Merge remote-tracking branch 'upstream/master' 2015-10-29 16:41:46 +01:00
vramik cd640339fc arquillian testsuite, migration test: fixed assembly.xml for 1.6.1.Final 2015-10-29 15:11:50 +01:00
vramik 52c02f03ae arquillian testsuite, migration test: fixed assembly.xml for 1.6.1.Final 2015-10-29 15:09:33 +01:00
vramik 84da341912 arquillian testsuite, migration test: add support for 1.5.1.Final 2015-10-29 14:48:05 +01:00
vramik 2c3958ce27 arquillian testsuite, migration test: update test realm to 1.6.1.Final 2015-10-29 14:43:23 +01:00
vramik 515f049ce6 arquillian testsuite, migration test: update version from 1.6.0.Final to 1.6.1.Final 2015-10-29 14:27:23 +01:00
vramik 03acad9b9d arquillian testsuite: increased startup timeout for containers 2015-10-29 13:41:38 +01:00
vramik 0392ebab32 arquillian testsuite: remove adding test realm in migration scenario 2015-10-29 12:22:33 +01:00
vramik 52804da497 arquillian testsuite: improve log messages for migration test 2015-10-29 11:36:29 +01:00
Cédric Chéneau 31df2046f0 Correction page login 2015-10-28 09:38:02 +01:00
Cédric Chéneau f14681f122 Correction page account 2015-10-28 09:35:17 +01:00
Cédric Chéneau d7d52b3295 Correction page account 2015-10-28 09:34:16 +01:00
ccheneau 8e71910e00 Fix french translation for account and login resource bundles 2015-10-27 20:14:41 +01:00
vramik e6620ca005 arquillian-testsuite added initial version of migration test 2015-10-27 14:31:15 +01:00
Ramiro Sánchez 490b8ce86f Added Spanish language support 2015-10-27 12:05:32 +01:00
vramik 480444ffc5 Merge upstream/master into migration 2015-10-27 11:50:30 +01:00
vramik 2fd7e5b355 arquillian-testsuite fixed whitespaces 2015-10-27 11:43:49 +01:00
vramik f45e0aa387 arquillian-testsuite migration servers: removed unused properties 2015-10-27 11:41:33 +01:00
vramik 6c77c295d5 arquillian-testsuite refactoring migration servers 2015-10-27 11:40:41 +01:00
vmuzikar ccfaf72b09 Init changes
(cherry picked from commit 31d8cab)
2015-10-26 15:47:05 +01:00
vmuzikar 700740a378 Added POs for client mappers
(cherry picked from commit f2cd982)
2015-10-26 15:45:55 +01:00
vmuzikar 8062f5f50e Added POs for client mappers
(cherry picked from commit f491c3c)
2015-10-26 15:43:00 +01:00
vmuzikar 5e0851c25f Rewritten some POs to use @id attributes
(cherry picked from commit 12b9c7e)
2015-10-26 14:17:07 +01:00
Marek Posolda 81650a89f9 Merge pull request #1782 from mposolda/master
KEYCLOAK-2005 Fixed migration to take less time. Added UserProvider.g…
2015-10-26 14:12:14 +01:00
vmuzikar 709449243c Added @id to some UI elements
(cherry picked from commit 4034258)
2015-10-26 14:02:30 +01:00
mhajas df24d8a01f Merge remote-tracking branch 'upstream/master' 2015-10-26 12:26:47 +01:00
mposolda f8f4de9389 KEYCLOAK-2005 Fixed migration to take less time. Added UserProvider.grantToAllUsers 2015-10-26 11:06:19 +01:00
agolPl 9755d79879 extract keycloak configuration file name 2015-10-25 00:26:18 +02:00
girirajsharma 70cbeaf336 [KEYCLOAK-1994] It's not possible to create flow with same name as deleted nested flow 2015-10-24 22:57:40 +05:30
girirajsharma b0a71fbeb0 Replace provider select options with Labels displayed in flows table 2015-10-24 13:28:43 +05:30
Marek Posolda 44f56e1d74 Merge pull request #1775 from mposolda/master
Migration and other fixes
2015-10-23 23:41:08 +02:00
mposolda 74924f2f8c KEYCLOAK-2011 2015-10-23 22:48:06 +02:00
mposolda c498b06f68 KEYCLOAK-2007 Migration upgrade for 1.6.1 2015-10-23 22:47:53 +02:00
Iván Perdomo 525bee66a4 KEYCLOAK-2016
Change label to Forgot password
2015-10-23 16:02:30 +02:00
Stian Thorgersen cd51a95764 Merge pull request #1771 from ramirost/release/locale
Added support to indicate desired locale on login options
2015-10-23 15:16:37 +02:00
Ramiro Sánchez 57c282eca8 Updated documentation with the new 'locale' parameter 2015-10-23 14:32:16 +02:00
Ramiro Sánchez ebd02a1a7f Changed query parameter from kc_locale to ui_locales as suggested by stianst 2015-10-23 14:21:59 +02:00
Stian Thorgersen cc4583bc0b Merge pull request #1772 from stianst/master
KEYCLOAK-2015
2015-10-23 13:41:27 +02:00
Stian Thorgersen 11ef67722b KEYCLOAK-2015
autofocus on input text field in login-totp.ftl
2015-10-23 13:40:57 +02:00
Stian Thorgersen 5316dd6d50 Merge pull request #1770 from gerbermichi/autofocus
autofocus on input text field in login-reset-password.ftl
2015-10-23 13:39:29 +02:00
Stian Thorgersen 3cee33847f Merge pull request #1769 from gerbermichi/client
expose client attributes in ClientBean
2015-10-23 13:38:25 +02:00
Stian Thorgersen a2b5b6dc71 Merge pull request #1768 from stianst/master
Fix saml examples not excluded from deploy
2015-10-23 13:37:48 +02:00
Ramiro Sánchez a5dc91f9a6 Added support to indicate desired locale on login 2015-10-23 12:23:24 +02:00
Michael Gerber 3b4b1b20d8 expose client attributes in ClientBean 2015-10-23 09:41:03 +02:00
Michael Gerber b32423d96b autofocus on input field 2015-10-23 09:38:40 +02:00
Stian Thorgersen 4f2fe0197d Fix saml examples not excluded from deploy 2015-10-23 08:48:43 +02:00
Stian Thorgersen aa25c899ee Merge pull request #1765 from vramik/migration-kc16
add support for migration tests - Keycloak 1.6.0.Final
2015-10-23 08:31:08 +02:00
Marek Posolda fa6b99eaab Merge pull request #1767 from mposolda/master
KEYCLOAK-1999 KC server doesn't start on EAP 6.4 in local mode on Pos…
2015-10-22 15:08:54 +02:00
mposolda e04dbffb88 KEYCLOAK-1999 KC server doesn't start on EAP 6.4 in local mode on PostgreSQL 2015-10-22 14:28:08 +02:00
vramik f823b17b90 add path for migration test realm 2015-10-22 14:04:50 +02:00
mhajas 7dfb7ddccd Merge remote-tracking branch 'upstream/master' 2015-10-21 15:41:34 +02:00
vramik 4b444d36b0 removed changes in admin-client 2015-10-21 10:35:19 +02:00
Stian Thorgersen 23546402fa Merge pull request #1749 from cfsnyder/master
KEYCLOAK-1863 added both issuer and account name to otp configuration
2015-10-21 09:24:58 +02:00
vramik edfc7ea103 add support for migration tests - KC1.6.0.Final 2015-10-20 17:00:57 +02:00
Stian Thorgersen 3a7c84c9e1 Merge pull request #1763 from mstruk/KEYCLOAK-1988
KEYCLOAK-1988 Loader constraint violation in multi-tenant example
2015-10-20 06:06:40 +02:00
Marko Strukelj 6b1287a553 KEYCLOAK-1988 Loader constraint violation in multi-tenant example 2015-10-19 22:11:31 +02:00
Stian Thorgersen c860c671d1 Fix parent of docbook modules 2015-10-19 19:37:51 +02:00
Marek Posolda 072950e9f3 Merge pull request #1762 from mposolda/master
KEYCLOAK-1987 Minor fixes in fuse demo
2015-10-19 19:23:05 +02:00
mposolda 8226abef40 KEYCLOAK-1987 Minor fixes in fuse demo 2015-10-19 17:29:04 +02:00
Bill Burke 0d05d38eb6 Merge remote-tracking branch 'upstream/master' 2015-10-19 10:21:03 -04:00
Stian Thorgersen 4f4368b29f Merge pull request #1761 from stianst/master
Version bump
2015-10-19 16:16:27 +02:00
Stian Thorgersen 3f8312427a Version bump 2015-10-19 16:15:29 +02:00
Marek Posolda 73bb579dc5 Merge pull request #1758 from mposolda/master
KEYCLOAK-1981 Migration fix of create-client
2015-10-19 14:11:37 +02:00
Stian Thorgersen c75528f81e Merge pull request #1760 from stianst/master
KEYCLOAK-1985
2015-10-19 13:35:37 +02:00
Stian Thorgersen 28bfac7214 KEYCLOAK-1985 2015-10-19 13:35:04 +02:00
Stian Thorgersen 1c9a347391 Merge pull request #1759 from stianst/master
KEYCLOAK-1984
2015-10-19 13:25:17 +02:00
Stian Thorgersen df03f51563 KEYCLOAK-1984
Examples includes pom.xml.releaseBackup
2015-10-19 13:25:02 +02:00
mposolda 7d590761dd KEYCLOAK-1981 Migration fix of create-client 2015-10-19 12:46:47 +02:00
Marek Posolda 944c416b45 Merge pull request #1757 from mposolda/master
KEYCLOAK-1983 Fix Oracle and Sybase
2015-10-19 12:27:45 +02:00
mposolda 028cbe1ce2 KEYCLOAK-1983 Fix Oracle and Sybase 2015-10-19 11:45:49 +02:00
Stian Thorgersen 256ca2b665 Merge pull request #1756 from stianst/master
KEYCLOAK-1977
2015-10-19 08:47:21 +02:00
Stian Thorgersen e4412523d4 Merge pull request #1754 from vramik/migration-kc15
arquillian-testsuite add migration-kc15
2015-10-19 08:44:51 +02:00
Stian Thorgersen 073d82b367 KEYCLOAK-1977 2015-10-19 08:43:34 +02:00
Stian Thorgersen 484c5ebb15 Merge pull request #1755 from stianst/master
Tweak authentication flow page a bit
2015-10-19 08:42:22 +02:00
vramik 4c33704c56 add support for migration kc1.5.1 2015-10-18 16:01:26 +02:00
Marek Posolda 511763d4bc Merge pull request #1753 from mposolda/master
KEYCLOAK-1952 Migration fix. Change some INFO messages to DEBUG/TRACE
2015-10-17 10:02:55 +02:00
mposolda 605c80a68d KEYCLOAK-1952 Migration fix. Change some INFO messages to DEBUG/TRACE 2015-10-16 20:51:40 +02:00
Marek Posolda 2325143803 Merge pull request #1751 from mposolda/master
KEYCLOAK-1972 docs and export/import fixes for offline tokens. DB fixes
2015-10-16 19:58:41 +02:00
mposolda 9cc5ca3ce4 KEYCLOAK-1972 docs and export/import fixes for offline tokens. DB fixes 2015-10-16 19:09:52 +02:00
Marek Posolda d13c120b6c Merge pull request #1750 from mposolda/master
KEYCLOAK-1929 Change package names. Fix Fuse demo
2015-10-16 17:35:14 +02:00
Bill Burke 186de7235c Merge remote-tracking branch 'upstream/master' 2015-10-16 11:03:42 -04:00
Bill Burke 9433ef284a set browser flow switch 2015-10-16 11:03:30 -04:00
mposolda 9942c7b519 Fix integration-arquillian 2015-10-16 16:57:28 +02:00
mposolda 4587fd23b6 KEYCLOAK-1929 Change package names. Fix Fuse demo 2015-10-16 16:30:42 +02:00
mhajas 32647d8682 Add tests for access grant and revoking grant 2015-10-16 16:22:30 +02:00
Cory Snyder d8ebf1e3d6 KEYCLOAK-1863 added both issuer and account name to otp configuration 2015-10-16 09:46:56 -04:00
Stian Thorgersen c21b56d596 Merge pull request #1748 from stianst/tweak-auth-page
Tweak authentication flow page a bit
2015-10-16 14:54:51 +02:00
Stian Thorgersen 4ee5c32b1e Merge pull request #1745 from stianst/kc-1969
KEYCLOAK-1969
2015-10-16 14:54:09 +02:00
Stian Thorgersen 6386d95904 Tweak authentication flow page a bit 2015-10-16 14:04:57 +02:00
Stian Thorgersen f99395aebe Merge pull request #1746 from mhajas/master
KEYCLOAK-1865 - Stabilize some integration-arquillian tests
2015-10-16 14:04:04 +02:00
Stian Thorgersen 82a7173dba Merge pull request #1747 from stianst/kc-1975
KEYCLOAK-1975
2015-10-16 14:03:47 +02:00
Stian Thorgersen 2bf6f4b0fd Tweak authentication flow page a bit 2015-10-16 14:03:30 +02:00
Stian Thorgersen d8e90028af Merge pull request #1744 from stianst/kc-1973
KEYCLOAK-1973 Clear user from authentication context is password is n…
2015-10-16 12:52:46 +02:00
Stian Thorgersen d2afb4892a KEYCLOAK-1975
Increase/decrease flow priority doesn't work
2015-10-16 12:52:07 +02:00
Stian Thorgersen eb9f69eee0 KEYCLOAK-1969
Admin console displays Clients flow page when execution or execution flow is created.
2015-10-16 12:23:41 +02:00
mhajas 39f985e04a Clean code 2015-10-16 12:09:35 +02:00
mhajas 41a51d924b Merge remote-tracking branch 'upstream/master' 2015-10-16 12:03:03 +02:00
mhajas ce996f6a41 Fix PasswordPolicyTest stability 2015-10-16 11:33:11 +02:00
mhajas 244848afc4 Fix events tests stability 2015-10-16 11:31:45 +02:00
Stian Thorgersen 2910db5595 KEYCLOAK-1973 Clear user from authentication context is password is not valid 2015-10-16 11:24:45 +02:00
Stian Thorgersen a6556a49c2 Merge pull request #1738 from gerbermichi/locale
KEYCLOAK-1962 update realm overwrites supported locales with empty list
2015-10-16 10:21:20 +02:00
Bill Burke e4961056db Merge pull request #1743 from patriot1burke/master
KEYCLOAK-1941
2015-10-15 20:41:35 -04:00
Bill Burke c8eee38471 Merge pull request #1742 from patriot1burke/master
KEYCLOAK-1954
2015-10-15 20:41:12 -04:00
Bill Burke 1e4b3fc3b6 KEYCLOAK-1941 2015-10-15 20:26:20 -04:00
Bill Burke 14426f26f2 KEYCLOAK-1954 2015-10-15 20:05:44 -04:00
Bill Burke 19ad846306 Merge pull request #1741 from patriot1burke/master
KEYCLOAK-1960
2015-10-15 19:33:55 -04:00
Bill Burke 235ffb2ff6 KEYCLOAK-1960 2015-10-15 18:56:56 -04:00
Bill Burke 181fdeb0d0 KEYCLOAK-1960 2015-10-15 18:54:57 -04:00
Bill Burke 8674578d0d Merge pull request #1730 from patriot1burke/master
KEYCLOAK-1908
2015-10-15 18:32:57 -04:00
Bill Burke 9cf4186eb2 fix arquillian test 2015-10-15 17:56:51 -04:00
Marek Posolda 92ed01a61b Merge pull request #1740 from mposolda/master
Offline tokens fixes & improvements
2015-10-15 23:15:50 +02:00
Bill Burke 99028e9cab Merge remote-tracking branch 'upstream/master' 2015-10-15 16:30:35 -04:00
Bill Burke 20f18eec15 support browser refresh 2015-10-15 16:30:21 -04:00
mposolda 67435791ed KEYCLOAK-1961 revokeRefreshToken support for offline tokens and other fixes 2015-10-15 22:30:17 +02:00
mposolda b4520baee5 KEYCLOAK-1959 Role offline_access was effective only when explicitly added to user 2015-10-15 22:30:17 +02:00
mposolda 802a39b1ce KEYCLOAK-904 Offline session idle timeout + admin console 2015-10-15 22:30:17 +02:00
Stian Thorgersen 229b964867 Merge pull request #1739 from mstruk/cli
KEYCLOAK-1849 Overlay installation scripts not working
2015-10-15 16:26:44 +02:00
mhajas b413bcb41d Unignored test 2015-10-15 14:57:58 +02:00
Marko Strukelj 0c39e30241 KEYCLOAK-1849 Overlay installation scripts not working
- fix unsupported dependency 'org.infinispan:main' warning
2015-10-15 13:46:38 +02:00
Marko Strukelj 11a8d3842e KEYCLOAK-1849 Overlay installation scripts not working 2015-10-15 13:46:38 +02:00
mhajas 2c460c3adc Test password policies using REST 2015-10-15 12:44:27 +02:00
Vlasta Ramik aaddaa6c25 Merge remote-tracking branch 'upstream/master' 2015-10-15 12:30:17 +02:00
Stian Thorgersen 96099e0798 Merge pull request #1732 from stianst/master
KEYCLOAK-1961
2015-10-15 10:57:23 +02:00
Stian Thorgersen e582de2837 KEYCLOAK-1961
Same token can be used multiple times to obtain access token
2015-10-15 09:11:18 +02:00
Stian Thorgersen e1fc863421 Merge pull request #1719 from gautric/french-i18n
French i18n
2015-10-15 08:54:26 +02:00
Stian Thorgersen 7de4051c9b Merge pull request #1737 from thomasdarimont/issue/KEYCLOAK-1918
KEYCLOAK-1918 - Add description field to client definition.
2015-10-15 08:53:47 +02:00
Stian Thorgersen 5b7b5b1b60 Merge pull request #1736 from stianst/test
Add test to make sure expired password is checked on direct grant
2015-10-15 08:53:28 +02:00
Michael Gerber f8effaee58 return null instead of an empty set. 2015-10-15 08:19:18 +02:00
Stian Thorgersen bf7d43fffb Add test to make sure expired password is checked on direct grant 2015-10-15 08:03:54 +02:00
Thomas Darimont 870702fd81 KEYCLOAK-1918 - Add description field to client definition.
Introduced description field with support for i18n for more descriptive client information.
Applications can use the description to display a "slightly" longer gist of
what the client / application is about, especially useful for tooltips.

The description is currently limited to 255 characters.
2015-10-15 07:33:38 +02:00
Stian Thorgersen 2a3e5fa7a4 Merge pull request #1733 from stianst/add-user-to-email-templates
KEYCLOAK-1965
2015-10-15 06:50:51 +02:00
Stian Thorgersen 90063cafec KEYCLOAK-1965
Include the user resource in the attribute map used by email provider freemarker
2015-10-14 20:29:15 +02:00
Stian Thorgersen 2b6fcc05e1 Merge pull request #1731 from stianst/master
Fix docbook
2015-10-14 20:15:54 +02:00
Stian Thorgersen f585ed5582 Fix docbook 2015-10-14 20:15:35 +02:00
Stian Thorgersen 192387047f Merge pull request #1728 from stianst/master
KEYCLOAK-1930
2015-10-14 20:15:00 +02:00
Bill Burke 78664e2571 Merge remote-tracking branch 'upstream/master' 2015-10-14 11:50:02 -04:00
Bill Burke bc71739fb2 Merge pull request #1729 from patriot1burke/master
KEYCLOAK-1839
2015-10-14 11:49:41 -04:00
Bill Burke 5563118d79 KEYCLOAK-1908 2015-10-14 11:49:36 -04:00
Bill Burke aadd63e2b0 Merge remote-tracking branch 'upstream/master' 2015-10-14 10:51:14 -04:00
Bill Burke 59d548228a KEYCLOAK-1839 2015-10-14 10:50:53 -04:00
Marek Posolda 68c3f2f65b Merge pull request #1726 from mposolda/master
KEYCLOAK-904 Offline tokens storage changes. Added UserSessionPersisterProvider . offline sessions preloaded to cache at startup
2015-10-14 14:24:54 +02:00
Stian Thorgersen b54bb25121 KEYCLOAK-1930 2015-10-14 14:22:10 +02:00
Stian Thorgersen 7f65a2be16 Merge pull request #1727 from stianst/master
Disable cli install scripts for overlay
2015-10-14 13:53:23 +02:00
Stian Thorgersen b907f8f92c Disable cli install scripts 2015-10-14 13:52:36 +02:00
Stian Thorgersen 3381ed50d1 KEYCLOAK-1930 2015-10-14 12:36:25 +02:00
mposolda c2c2b835b2 Unable to compile on JDK 7 2015-10-14 11:23:10 +02:00
mposolda f92fe6bea9 KEYCLOAK-904 Offline tokens storage changes. Added UserSessionPersisterProvider . offline sessions preloaded to cache at startup 2015-10-14 11:07:44 +02:00
Stian Thorgersen 6aa029784a Merge pull request #1724 from stianst/master
KEYCLOAK-1849 KEYCLOAK-1958 Fix install scripts for overlays
2015-10-14 09:31:07 +02:00
Stian Thorgersen 325072c74d KEYCLOAK-1849 KEYCLOAK-1958 Fix install scripts for overlays 2015-10-14 09:24:06 +02:00
Stian Thorgersen 1e48143db0 Merge pull request #1723 from stianst/master
KEYCLOAK-1877
2015-10-14 09:23:35 +02:00
Stian Thorgersen 8c72ef2980 KEYCLOAK-1877
Empty bubble in admin event types select box
2015-10-14 07:22:56 +02:00
Stian Thorgersen e7febbd5a5 Merge pull request #1700 from kodemaniak/master
URI based configuration of MongoDB to support Replica Sets
2015-10-14 07:07:03 +02:00
Stian Thorgersen d9211d6bc9 Merge pull request #1718 from lkubik/capitalizeAllLetters
KEYCLOAK-1945
2015-10-14 06:53:24 +02:00
Stian Thorgersen 8121a9391f Merge pull request #1721 from stianst/master
KEYCLOAK-1883
2015-10-14 06:49:23 +02:00
Stian Thorgersen 65b05fd4e4 Merge pull request #1722 from ssilvert/catch-missing-bundle-keys
Catch missing bundle keys
2015-10-14 06:38:40 +02:00
Stan Silvert 940c9f8bf1 KEYCLOAK-1933 Validate resource bundles for admin console 2015-10-13 18:25:14 -04:00
Stian Thorgersen c85e0248dd KEYCLOAK-1883
Improve setting of users locale
2015-10-13 19:47:10 +02:00
Stian Thorgersen 2ec143a3ba Fix tests 2015-10-13 13:17:46 +02:00
Stian Thorgersen a279ff3d7f Merge pull request #1717 from stianst/master
KEYCLOAK-1947 Add tests without client secret
2015-10-13 10:36:42 +02:00
gautric 128c26043b [KEYCLOAK-1903] Add French language support, cross link with other translation 2015-10-13 10:08:34 +02:00
gautric fe9b5a6588 Merge remote-tracking branch 'keycloak/master' into french-i18n 2015-10-13 10:02:04 +02:00
Lukas Kubik 0f93e72b02 KEYCLOAK-1945
Change capitalize function behavior
2015-10-13 09:18:54 +02:00
Stian Thorgersen bdba5ff8b1 KEYCLOAK-1947 Add tests without client secret 2015-10-13 09:02:09 +02:00
Stian Thorgersen 7071161a7c Merge pull request #1716 from stianst/master
KEYCLOAK-1865
2015-10-13 09:00:29 +02:00
Stian Thorgersen 672103e363 KEYCLOAK-1865
Failing tests in testsuite/integration-arquillian
2015-10-13 09:00:12 +02:00
Stian Thorgersen f579d7ffe9 Merge pull request #1715 from stianst/fix-email-removed-profile
KEYCLOAK-1823
2015-10-13 08:58:58 +02:00
Stian Thorgersen d1f0b353e8 Merge pull request #1714 from stianst/master
KEYCLOAK-1335
2015-10-13 08:26:50 +02:00
Stian Thorgersen ef56dca050 KEYCLOAK-1823
Annoying behaviour of validations in user registration form
2015-10-13 08:14:39 +02:00
Stian Thorgersen 07c3772b08 KEYCLOAK-1823
Annoying behaviour of validations in user registration form
2015-10-13 07:36:20 +02:00
Stian Thorgersen 85a886da18 KEYCLOAK-1823
Annoying behaviour of validations in user registration form
2015-10-13 07:30:31 +02:00
Stian Thorgersen 4ce93171ba KEYCLOAK-1335
Slow startup in OpenStack
2015-10-13 07:00:47 +02:00
Stian Thorgersen c987d57b9e Merge pull request #1713 from girirajsharma/master
[KEYCLOAK-1923] It's possible to create new authentication flow with empty name
2015-10-13 06:49:24 +02:00
Stian Thorgersen a416327124 Merge pull request #1712 from gautric/french-i18n
[KEYCLOAK-1903] Add French language support, add and fix some translations
2015-10-13 06:49:05 +02:00
girirajsharma 285ef50341 [KEYCLOAK-1923] It's possible to create new authentication flow with empty name 2015-10-13 00:29:08 +05:30
Stian Thorgersen 0d22074826 Merge pull request #1711 from stianst/remove-zip-export
KEYCLOAK-1944
2015-10-12 19:38:32 +02:00
gautric b76fb68ff7 [KEYCLOAK-1903] Add French language support, 2xSimpleQuote correction 2015-10-12 19:32:04 +02:00
gautric f03128f5ed [KEYCLOAK-1903] Add French language support, 2xSimpleQuote correction 2015-10-12 19:31:07 +02:00
gautric 8fb05bacd1 [KEYCLOAK-1903] Add French language support, correct accent 2015-10-12 19:29:09 +02:00
gautric f8842b3df1 [KEYCLOAK-1903] Add French language support. add and fixes some translation 2015-10-12 19:25:31 +02:00
gautric b376d1fb6d Some fixes into "fr" messages 2015-10-12 16:52:14 +02:00
gautric d4e0901599 Merge remote-tracking branch 'keycloak/master' into french-i18n 2015-10-12 16:27:18 +02:00
Vlasta Ramik 217c359530 Merge remote-tracking branch 'upstream/master' 2015-10-12 15:35:04 +02:00
Stian Thorgersen 4fbf6841be KEYCLOAK-1944
Remove winzipaes import/export provider
2015-10-12 14:43:52 +02:00
Stian Thorgersen 2deb20a2c9 Merge pull request #1710 from stianst/master
Fix for issue introduced by fixing KEYCLOAK-1931
2015-10-12 14:03:57 +02:00
Stian Thorgersen 20b92c410f Fix for issue introduced by fixing KEYCLOAK-1931 2015-10-12 14:03:38 +02:00
Vlasta Ramik 1d829a8365 Merge remote-tracking branch 'upstream/master' 2015-10-12 13:55:36 +02:00
Stian Thorgersen 10b4bd24a4 Merge pull request #1706 from girirajsharma/Patch-Keycloak-1931
[KEYCLOAK-1931] UI doesn't reflect when flow is deleted.
2015-10-12 13:48:45 +02:00
Stian Thorgersen 788501f13d Merge pull request #1704 from AOEpeople/KEYCLOAK-1910
KEYCLOAK-1910, added same fix for registrations endpoint
2015-10-12 13:36:02 +02:00
Carsten Saathoff 345bea50b6 Added documentation about the mongodb:// URI based configuration and how to use a MongoDB replica set. 2015-10-12 13:04:48 +02:00
gautric ab7bfa6d90 Merge remote-tracking branch 'keycloak/master' 2015-10-12 11:45:08 +02:00
Stian Thorgersen 4f7979d9fc Merge pull request #1707 from stianst/client-reg
Refactored client registration service
2015-10-12 11:15:19 +02:00
Stian Thorgersen 286458b94a Merge pull request #1709 from stianst/fix-test-timeouts
Disable failing tests
2015-10-12 10:51:17 +02:00
Stian Thorgersen 61a8c422df Disable failing tests 2015-10-12 09:39:57 +02:00
Stian Thorgersen baaf445727 Merge pull request #1678 from gautric/master
[KEYCLOAK-1903] Add French language support
2015-10-12 08:49:44 +02:00
Stian Thorgersen 2faf0eccdb Refactored client registration service 2015-10-12 08:31:39 +02:00
girirajsharma 639b5b617b [KEYCLOAK-1931] UI doesn't reflect when flow is deleted 2015-10-11 12:42:07 +05:30
girirajsharma 115663a32d [KEYCLOAK-1932] Unable to create flow named exactly the same as removed NON-top level flow 2015-10-11 12:42:07 +05:30
Sebastian Rose b277afa6d9 KEYCLOAK-1910, added same fix for registrations endpoint 2015-10-10 10:40:16 +02:00
Bill Burke 960cd8c822 Merge pull request #1703 from patriot1burke/master
filter docs
2015-10-09 19:02:47 -04:00
Bill Burke 4acc69c604 Merge pull request #1702 from patriot1burke/master
SAML and OIDC Servlet Filter SP
2015-10-09 19:02:18 -04:00
Bill Burke 0230e008c5 filter docs 2015-10-09 18:49:15 -04:00
Bill Burke 382b8d60d0 Merge remote-tracking branch 'upstream/master' 2015-10-09 18:11:53 -04:00
Bill Burke 0ad29c9737 node registration 2015-10-09 18:11:38 -04:00
Bill Burke 9ced56d8d7 saml and oidc filters 2015-10-09 18:07:50 -04:00
Carsten Saathoff eb197c46f7 Setting operational attributes for mongo also when configured via URI. 2015-10-09 15:06:22 +02:00
Stian Thorgersen 63947cd37a Merge pull request #1698 from stianst/master
Renamed 'Keycloak Version to Server Version' on server info page
2015-10-09 13:59:29 +02:00
Stian Thorgersen 938ce9612c Renamed 'Keycloak Version to Server Version' on server info page 2015-10-09 13:59:12 +02:00
Stian Thorgersen d6119c04d6 Merge pull request #1697 from stianst/master
KEYCLOAK-1859 Invalid "Go to the home page" link on the "Resource not…
2015-10-09 13:45:44 +02:00
Stian Thorgersen 14646781ad KEYCLOAK-1859 Invalid "Go to the home page" link on the "Resource not found" page 2015-10-09 13:45:20 +02:00
vramik 1b41832946 fixed verifyEmail test 2015-10-09 13:43:16 +02:00
Stian Thorgersen 57d0bac96a Merge pull request #1696 from stianst/fix-admin-console-not-loading-properly
KEYCLOAK-1876 Some admin console pages don't load properly when accessed via URL
2015-10-09 11:11:03 +02:00
Stian Thorgersen 2ca3ce2dba Merge pull request #1693 from stianst/fix-umlats
KEYCLOAK-1739 User registration form is not able to process diacritics
2015-10-09 10:36:17 +02:00
Stian Thorgersen e5d404fdb3 Remove unused import 2015-10-09 09:54:39 +02:00
Stian Thorgersen 8829fe8658 KEYCLOAK-1739 User registration form is not able to process diacritics 2015-10-09 09:52:25 +02:00
Stian Thorgersen 9ccb0b1f65 Merge pull request #1692 from stianst/fix-json-includes-null
KEYCLOAK-1896 Search for users returns null values
2015-10-09 09:50:30 +02:00
Stian Thorgersen 7bb70f2d00 Merge pull request #1681 from mstruk/i18n
KEYCLOAK-1152 Internationalization support for admin console
2015-10-09 09:50:20 +02:00
Stian Thorgersen 3ab7edbbcd Merge pull request #1695 from stianst/fix-undertow-start
KEYCLOAK-1935 Stop KeycloakServer if Undertow fails to start
2015-10-09 09:49:34 +02:00
Stian Thorgersen d4060cce92 KEYCLOAK-1876 Some admin console pages don't load properly when accessed via URL 2015-10-09 09:44:00 +02:00
Stian Thorgersen 1342904fae KEYCLOAK-1935 Stop KeycloakServer if Undertow fails to start 2015-10-09 09:03:48 +02:00
Stian Thorgersen fc0a3c3e73 Merge pull request #1694 from stianst/master
Fix docbook parent pom artifactId
2015-10-09 08:54:15 +02:00
Stian Thorgersen 756a9f095c Fix docbook parent pom artifactId 2015-10-09 08:53:57 +02:00
Stian Thorgersen 021e48d6d6 Merge pull request #1689 from AOEpeople/KEYCLOAK-1927
KEYCLOAK-1927
2015-10-09 07:06:51 +02:00
Bill Burke 91f78c61b7 Merge pull request #1691 from patriot1burke/master
SAML SP Servlet Filter
2015-10-08 20:50:55 -04:00
Bill Burke d39aee0a72 Merge remote-tracking branch 'upstream/master' 2015-10-08 16:19:56 -04:00
Bill Burke 7c600e2f4b SAML SP Filter 2015-10-08 16:19:43 -04:00
Stan Silvert 14079b950a KEYCLOAK-1933: Validate resource bundles for admin console 2015-10-08 15:23:27 -04:00
Sebastian Rose 173c112f8e KEYCLOAK-1927 2015-10-08 20:34:08 +02:00
Stian Thorgersen 67d8ca0207 KEYCLOAK-1896 Search for users returns null values 2015-10-08 20:15:53 +02:00
Marko Strukelj e690f4e645 KEYCLOAK-1152 Internationalization support for admin console
- Added custom mapper fields localization
2015-10-08 17:11:06 +02:00
Stian Thorgersen 4c554b4af6 Merge pull request #1687 from stianst/client-reg2
KEYCLOAK-1749 Client registration service and client java api
2015-10-08 15:48:58 +02:00
Marko Strukelj 3aee5eeecf KEYCLOAK-1152 Internationalization support for admin console
- Added i18n to 'clients', and 'identity providers' sections
2015-10-08 15:31:03 +02:00
Stian Thorgersen 366a1629e5 KEYCLOAK-1749 Client registration service and client java api 2015-10-08 11:55:42 +02:00
Stian Thorgersen 7fec1677ee Merge pull request #1679 from lkrzyzanek/KEYCLOAK-1904
Add 'register' and 'createRegisterUrl' methods to Javascript Adapter API
2015-10-08 11:51:18 +02:00
Carsten Saathoff 8e391ffa4e After rebase to upstream: Merge branch 'master' of github.com:kodemaniak/keycloak 2015-10-08 10:45:36 +02:00
Carsten Saathoff d65ce5d1d4 Added configuration via mongodb:// uri to mongo provider factory. 2015-10-08 10:44:49 +02:00
Carsten Saathoff 6741dffe38 Added configuration via mongodb:// uri to mongo provider factory. 2015-10-08 10:02:36 +02:00
Stian Thorgersen 894af03323 Merge pull request #1680 from ssilvert/i18n-in-java
KEYCLOAK-1152 i18n for text hard-coded in java source
2015-10-08 06:47:10 +02:00
Bill Burke 80dea9c0bd Merge pull request #1682 from patriot1burke/master
SAML eap adapter and docs
2015-10-07 21:00:33 -04:00
Bill Burke 0b83325470 cleanup 2015-10-07 16:30:42 -04:00
Bill Burke 368ea64b51 Merge remote-tracking branch 'upstream/master' 2015-10-07 16:21:13 -04:00
Bill Burke 450e031da9 saml adapter docs 2015-10-07 16:20:59 -04:00
Marek Posolda 1796a45a68 Merge pull request #1677 from mkdgit/Customized_LDAP_filter_1_6
KEYCLOAK-1906 : Customized LDAP filter
2015-10-07 22:05:30 +02:00
Stan Silvert c9437595b7 KEYCLOAK-1152 i18n for text hard-coded in java source
(ProtocolMapperUtils)
2015-10-07 11:34:34 -04:00
Bill Burke a1b315adbd Merge remote-tracking branch 'upstream/master' 2015-10-07 10:19:26 -04:00
Bill Burke 1781588597 as7/eap saml adapter 2015-10-07 10:19:15 -04:00
Libor Krzyzanek f29aff4bed Add 'register' and 'createRegisterUrl' methods to Javascript Adapter API. fixes #KEYCLOAK-1904 2015-10-07 13:53:25 +02:00
Stian Thorgersen ac91839e69 Merge pull request #1663 from thomasdarimont/issue/KEYCLOAK-1893
KEYCLOAK-1893 - Allow to configure OTP period in admin console.
2015-10-07 09:35:59 +02:00
Stian Thorgersen 9c0c8e37b6 Merge pull request #1676 from Smartling/KEYCLOAK-1901
KEYCLOAK-1901: Add a Keycloak client builder
2015-10-07 09:06:19 +02:00
Bill Burke d40237b08d saml adapters docs/dist 2015-10-06 15:56:44 -04:00
gautric 59527e12f0 [KEYCLOAK-1903] Add French language support, few fixes 2015-10-06 20:01:04 +02:00
gautric 6d0483667f [KEYCLOAK-1903] Add French language support 2015-10-06 18:09:36 +02:00
gautric dcf8747d7e Merge remote-tracking branch 'keycloak/master' 2015-10-06 16:32:11 +02:00
Stian Thorgersen 7a3b4823b0 Merge pull request #1662 from Smartling/KEYCLOAK-1892
WrappedHttpServletRequest may throw an exception returning cookies
2015-10-06 14:58:54 +02:00
Stian Thorgersen 64ecc3b153 Merge pull request #1672 from ssilvert/KEYCLOAK-1882-add-locale-mapper-on-new-realm
KEYCLOAK-1882 Also add locale mapper when new realm is created.
2015-10-06 14:58:27 +02:00
Stian Thorgersen cc41a1fd78 Merge pull request #1656 from gerbermichi/import2
swap import and migrate order (KEYCLOAK-1884)
2015-10-06 12:05:59 +02:00
gautric 255b1cb3bf Merge remote-tracking branch 'keycloak/master' 2015-10-06 10:25:23 +02:00
Michal Drela a1bb202bd4 Customized LDAP filter 2015-10-06 10:01:29 +02:00
Scott Rossillo 332e3f6099 KEYCLOAK-1901: Add a Keycloak client builder
Adds support for creating a Keycloak client using the builder
pattern and supports customizing the underlying ResteasyClient
used for connecting to the Keycloak server.
2015-10-05 14:56:38 -04:00
Bill Burke 6b41d79058 Merge pull request #1675 from patriot1burke/master
saml adapter doc module
2015-10-05 13:34:53 -04:00
Bill Burke 3b4b5c11e6 Merge remote-tracking branch 'upstream/master' 2015-10-05 13:33:55 -04:00
Bill Burke 0c9e764e11 move docs 2015-10-05 13:33:38 -04:00
Marek Posolda 00cbc22d8b Merge pull request #1674 from girirajsharma/master
[KEYCLOAK-1864] No names for required actions
2015-10-05 08:56:26 +02:00
girirajsharma 0a3de09b5a [KEYCLOAK-1864] No names for required actions 2015-10-04 23:44:44 +05:30
Bill Burke 4e0ad5ac0b Merge pull request #1673 from patriot1burke/master
saml adapter schema and simplifications
2015-10-02 21:16:34 -04:00
Bill Burke 72256fd6ac Merge remote-tracking branch 'upstream/master' 2015-10-02 18:40:05 -04:00
Bill Burke d06237a3fd saml adapter schema and simplifications 2015-10-02 18:39:50 -04:00
Stan Silvert 28fad68486 KEYCLOAK-1882 Also add locale mapper when new realm is created. 2015-10-02 15:01:39 -04:00
Stian Thorgersen 53b86cbace Merge pull request #1671 from stianst/master
KEYCLOAK-1882 Add locale mapper to admin console clients during migra…
2015-10-02 15:09:43 +02:00
Stian Thorgersen a53aebcddf KEYCLOAK-1882 Add locale mapper to admin console clients during migration 2015-10-02 13:43:41 +02:00
Marek Posolda af307c695a Merge pull request #1670 from mposolda/master
KEYCLOAK-1856 KEYCLOAK-1860 Fix onoffswitchvalue directive
2015-10-02 11:58:04 +02:00
mposolda 7816f053a6 KEYCLOAK-1856 KEYCLOAK-1860 Fix onoffswitchvalue directive 2015-10-02 11:09:54 +02:00
Bill Burke ed54ba9064 Merge pull request #1669 from patriot1burke/master
keycloak-common
2015-10-01 16:03:20 -04:00
Bill Burke 8acdaf462b fix arquillian 2015-10-01 15:14:16 -04:00
Bill Burke c5efd34a46 Merge remote-tracking branch 'upstream/master' 2015-10-01 14:28:04 -04:00
Bill Burke 75343986b0 keycloak-common 2015-10-01 14:27:51 -04:00
Stian Thorgersen 424d357c9c Merge pull request #1668 from vramik/master
arquillian-testsuite: fixed org.keycloak.services.ForbiddenException in test log
2015-10-01 16:35:29 +02:00
Stian Thorgersen 56116038d6 Merge pull request #1667 from stianst/fb-fix
KEYCLOAK-1894 Fix login with Facebook missing profile details
2015-10-01 13:37:57 +02:00
Stian Thorgersen c76da8f3b8 Merge pull request #1666 from stianst/migration-fix
Fix db migration not running as latest jpa version wasn't updated
2015-10-01 13:37:49 +02:00
Stian Thorgersen 589eb3206e KEYCLOAK-1894 Fix login with Facebook missing profile details 2015-10-01 11:54:14 +02:00
Stian Thorgersen 5419ec32e4 Fix db migration not running as latest jpa version wasn't updated 2015-10-01 09:01:06 +02:00
Stian Thorgersen c9e0a7a97d Merge pull request #1657 from stianst/zxing
KEYCLOAK-1888
2015-10-01 08:07:43 +02:00
Bill Burke 5b5f99fdfe Merge pull request #1665 from patriot1burke/master
saml wildfly sp/dist
2015-09-30 17:41:41 -04:00
Bill Burke d3bd0a67a7 saml example docs 2015-09-30 16:51:21 -04:00
Bill Burke 2a36185419 Merge remote-tracking branch 'upstream/master' 2015-09-30 16:36:42 -04:00
Bill Burke 76e3c6394c saml sp distro 2015-09-30 16:36:21 -04:00
Thomas Darimont 9e15b20591 KEYCLOAK-1893 - Allow to configure OTP period in admin console.
Added input form that allows to specify the OTP token period
in the `OTP Policy` section of the `Authentication` settings.

Since the value is already backed by the provided `otpPolicyPeriod`
field in the `RealmRepresentation` class we only needed to show the value
in the admin ui.
2015-09-30 21:07:06 +02:00
Scott Rossillo 05bd51ac1c WrappedHttpServletRequest may throw an exception returning cookies
HttpServletRequest.getCookies() may return null
2015-09-30 14:31:15 -04:00
Bill Burke d648ba73de wildfly saml distro 2015-09-30 11:56:21 -04:00
Marek Posolda c6b34f32a1 Merge pull request #1660 from mposolda/master
Fixes
2015-09-30 17:16:44 +02:00
Stian Thorgersen 974c0a50e7 Merge pull request #1659 from stianst/liquibase
KEYCLOAK-1890
2015-09-30 17:05:30 +02:00
Bill Burke 07d3b26722 Merge remote-tracking branch 'upstream/master' 2015-09-30 11:01:55 -04:00
Bill Burke 510b03476f saml distro 2015-09-30 11:01:45 -04:00
mposolda 4f6d3c8dca KEYCLOAK-1815 Reduce info logging 2015-09-30 16:35:56 +02:00
mposolda 95fe2fe74b KEYCLOAK-904 offline tokens - migration 2015-09-30 16:35:56 +02:00
Stian Thorgersen e937216cf7 KEYCLOAK-1888
Upgrade ZXing dependency
2015-09-30 15:03:02 +02:00
Stian Thorgersen fd8d93663e KEYCLOAK-1890
Upgrade to Liquibase 3.4.1
2015-09-30 15:02:30 +02:00
Stian Thorgersen a048cfc102 Fix merge error 2015-09-30 15:00:35 +02:00
Stian Thorgersen 272272634d KEYCLOAK-1889
Upgrade FreeMarker dependency
2015-09-30 14:58:02 +02:00
Stian Thorgersen 01947f46b9 Merge pull request #1655 from stianst/twitter4j
KEYCLOAK-1887 Upgrade Twitter4j dependency
2015-09-30 14:49:24 +02:00
Bill Burke 5ec73a81e9 Merge pull request #1651 from patriot1burke/master
wf saml adapter first iter
2015-09-30 08:39:45 -04:00
vramik 4cba764ac3 add view-realm role to test user for test realm to avoid org.keycloak.services.ForbiddenException in test log 2015-09-30 14:23:24 +02:00
Stian Thorgersen 84b9963609 Merge pull request #1654 from stianst/master
Set product name/version in keycloak-paren pom
2015-09-30 14:21:39 +02:00
Stian Thorgersen 99c216635f KEYCLOAK-1887
Upgrade Twitter4j dependency
2015-09-30 14:08:21 +02:00
Stian Thorgersen 25a6fcc382 Set product name/version in keycloak-paren pom 2015-09-30 13:41:37 +02:00
Michael Gerber acefd3cacd swap import and migrate order 2015-09-30 13:31:22 +02:00
Marek Posolda 15a5c87cc5 Merge pull request #1653 from mposolda/master
KEYCLOAK-904 offline tokens - example, refactoring, polishing
2015-09-30 12:37:18 +02:00
mposolda 3044138e10 Fix compilation errors 2015-09-30 10:51:53 +02:00
mposolda 6fbb8ccf71 KEYCLOAK-904 Offline tokens - model changes, admin console, export/import, docs 2015-09-30 10:51:36 +02:00
mposolda 018866aa81 KEYCLOAK-904 Offline portal example added 2015-09-30 09:23:23 +02:00
Bill Burke 18b2b572ac fix compilation errors 2015-09-29 20:38:10 -04:00
Bill Burke d9e67aa5ee Merge remote-tracking branch 'upstream/master' 2015-09-29 20:26:16 -04:00
Bill Burke e675ce44d5 Merge remote-tracking branch 'upstream/master' 2015-09-29 20:25:28 -04:00
Bill Burke df46a8ea0d Merge pull request #1647 from patriot1burke/master
tomcat 7 and 8 SAML adapter tests
2015-09-29 20:25:19 -04:00
Bill Burke e277d5b55e wf saml adapter 2015-09-29 20:24:59 -04:00
Stian Thorgersen 4bd1d899db Merge pull request #1618 from ssilvert/i18n
KEYCLOAK-1152: i18n using angular-translate
2015-09-29 14:57:24 +02:00
Stian Thorgersen 3e3d92c2e4 Merge pull request #1650 from stianst/client-reg2
KEYCLOAK-1868 Import clients through admin console
2015-09-29 14:12:59 +02:00
Stian Thorgersen 55deedd3b8 KEYCLOAK-1868 Import clients through admin console
KEYCLOAK-1869 Add root url to clients that should be used to resolve relative urls
2015-09-29 12:16:05 +02:00
Stian Thorgersen 8b6251eb23 Merge pull request #1649 from eugene-chow/master
Updated documentation for "Server Installation > Installing Keycloak Server as Root Context"
2015-09-29 08:59:54 +02:00
Stian Thorgersen 35919da0a4 Merge pull request #1645 from mhajas/master
Arquillian testsuite refactoring
2015-09-29 08:59:09 +02:00
Eugene Chow ec018d2739 Updated documentation for "Server Installation > Installing Keycloak Server as Root Context" to work with Keycloak 1.5 2015-09-29 10:32:16 +08:00
Bill Burke b1a23a13d6 jetty saml fixes 2015-09-28 16:30:03 -04:00
Bill Burke 3ebbe96786 Merge remote-tracking branch 'upstream/master' 2015-09-28 16:05:22 -04:00
Bill Burke cfaa4c60c9 jetty saml adapter 2015-09-28 16:05:07 -04:00
Stian Thorgersen e104450fc8 Merge pull request #1648 from girirajsharma/master
[KEYCLOAK-1880] Admin API Doesn't Detect Null Client
2015-09-28 09:06:26 +02:00
girirajsharma c22b0f4da8 [KEYCLOAK-1880] Admin API Doesn't Detect Null Client 2015-09-27 14:57:16 +05:30
Stan Silvert 302d0b58cc Get locale from token via builtin mapper. 2015-09-26 20:11:06 -04:00
Bill Burke 72999f0acb fix tomcat test shutdown 2015-09-25 17:32:19 -04:00
Bill Burke a942322d99 Merge pull request #1646 from patriot1burke/master
tomcat 6 saml adapter
2015-09-25 15:51:37 -04:00
Bill Burke 8902502c4d tomcat8 saml tests 2015-09-25 15:49:40 -04:00
Bill Burke 8d19741f53 tomcat 7 saml adapter 2015-09-25 15:45:16 -04:00
Bill Burke e60549d764 fix poms 2015-09-25 15:17:51 -04:00
Bill Burke 0a42a28eeb Merge remote-tracking branch 'upstream/master' 2015-09-25 15:12:34 -04:00
Bill Burke 88355d7eb4 tomcat6 adapter 2015-09-25 15:12:14 -04:00
mhajas 67db5917ac Merge remote-tracking branch 'upstream/master' 2015-09-25 09:30:58 +02:00
mhajas 8f1daf5d77 Refactoring 2015-09-25 09:10:17 +02:00
Stian Thorgersen 6d5e3b2a17 Merge pull request #1643 from stianst/master
KEYCLOAK-1878
2015-09-25 07:37:23 +02:00
Stian Thorgersen 75c0d5089f KEYCLOAK-1878
Add Base64 to Keycloak core
2015-09-25 07:02:25 +02:00
Tomas Kyjovsky 5b1fcbfc51 Merge pull request #1642 from tkyjovsk/master
FIxed compilation error of arquillian tests by adding keycloak-adapte…
2015-09-24 22:46:29 +02:00
Tomas Kyjovsky 0c80255f3a FIxed compilation error of arquillian tests by adding keycloak-adapter-spi dependency. 2015-09-24 21:57:02 +02:00
Stan Silvert 121f8e9174 Converted some more pages to user ng-translate. 2015-09-24 15:35:37 -04:00
Bill Burke c1cb50b39f Merge pull request #1641 from patriot1burke/master
initial saml sp adapter
2015-09-24 14:23:05 -04:00
Bill Burke 791a740f32 Merge remote-tracking branch 'upstream/master' 2015-09-24 12:05:24 -04:00
Bill Burke 546cdd7d8f fix modules for refactor 2015-09-24 12:05:12 -04:00
Stian Thorgersen 8ef6602f82 Merge pull request #1640 from stianst/master
Removed unused netty dependency from keycloak parent
2015-09-24 09:16:33 +02:00
Stian Thorgersen 2938759db4 Removed unused files from common/lib theme 2015-09-24 08:37:01 +02:00
Stian Thorgersen f7bcca8553 Removed unused netty dependency from keycloak parent 2015-09-24 08:05:34 +02:00
Stian Thorgersen 4eaf893492 Merge pull request #1610 from raehalme/KEYCLOAK-1828
KEYCLOAK-1828 attemptAuthentication throws KeycloakAuthenticationException if authentication fails
2015-09-24 06:32:27 +02:00
Stian Thorgersen 0ba6ab198a Merge pull request #1611 from raehalme/KEYCLOAK-1829
KEYCLOAK-1829 unsuccessfulAuthentication now returns HTTP response status 401 instead of 403
2015-09-24 06:31:33 +02:00
Bill Burke 49a530f2b4 merge 2015-09-23 21:13:42 -04:00
Bill Burke c14d3d7963 merge conflicts 2015-09-23 21:01:47 -04:00
Bill Burke fe26d6ecec more 2015-09-23 20:54:27 -04:00
Bill Burke 35a00b449d all tests 2015-09-23 20:45:20 -04:00
Bill Burke 1e9c09d23a more complete 2015-09-23 17:54:16 -04:00
Stian Thorgersen ec4f8a7f15 Merge pull request #1639 from stianst/master
Make it possible to set hibernate spec artifact id with a property in…
2015-09-23 20:36:58 +02:00
Stian Thorgersen d109bf7b56 Updated release process to use maven release plugin 2015-09-23 15:50:25 +02:00
Stian Thorgersen 4625ab917d Merge pull request #1636 from vramik/master
arquillian-testsuite: Suppress error from GreenMail on shutdown, login settings test coverage
2015-09-23 15:37:12 +02:00
Stian Thorgersen 7d239f8990 Make it possible to set hibernate spec artifact id with a property in parent pom 2015-09-23 15:36:40 +02:00
Marek Posolda 22f7efd977 Merge pull request #1638 from mposolda/master
KEYCLOAK-904 Consents support. Added scopeParamRequired flag to RoleM…
2015-09-23 15:30:36 +02:00
mposolda 2a349673b9 Fix integration-arquillian 2015-09-23 14:47:20 +02:00
Vlasta Ramik 361019fc6a Merge remote-tracking branch 'upstream/master' 2015-09-23 13:07:48 +02:00
vramik abb099745f added test coverage of login settings 2015-09-23 13:07:30 +02:00
mposolda 046edbbd54 KEYCLOAK-904 Consents support. Added scopeParamRequired flag to RoleModel 2015-09-23 12:52:47 +02:00
Stian Thorgersen 8cc4c8c5e2 Merge pull request #1635 from stianst/realm-import
KEYCLOAK-1866
2015-09-23 11:45:56 +02:00
Vlasta Ramik d2d3a3f216 Merge remote-tracking branch 'upstream/master' 2015-09-23 11:23:57 +02:00
vramik cbf5c920ea Suppress error from GreenMail on shutdown 2015-09-23 11:21:48 +02:00
Stian Thorgersen 7ac1d1f14c KEYCLOAK-1866
Allow changing name and view details of imported realm
2015-09-23 11:08:53 +02:00
vramik e811b87679 moved smtp server configuration to suiteContext 2015-09-23 10:50:49 +02:00
Stian Thorgersen d08fca4e0a Merge pull request #1625 from girirajsharma/master
[KEYCLOAK-1787] Confirming password policy values with ENTER key deletes the first item in the table.
2015-09-23 08:33:07 +02:00
Stian Thorgersen 30aa41a2ee Merge pull request #1633 from stianst/update-username
KEYCLOAK-1857 Allow users to edit username on first login
2015-09-23 08:26:03 +02:00
Stian Thorgersen 9d8d690100 KEYCLOAK-1857 Prefill update profile form with username from user or formdata 2015-09-23 07:43:38 +02:00
dcampagna 43541d3028 Show error when username already exists (KEYCLOAK-1857) 2015-09-23 07:43:38 +02:00
dcampagna 880e831e71 Removed comment (KEYCLOAK-1857) 2015-09-23 07:43:38 +02:00
dcampagna fe2278b320 Fix broken tests (KEYCLOAK-1857) 2015-09-23 07:43:38 +02:00
dcampagna f7a8bbbcc8 Allow username change at first login (KEYCLOAK-1857) 2015-09-23 07:43:38 +02:00
dcampagna fde4bc99aa Allow username change at first login (KEYCLOAK-1849) 2015-09-23 07:43:38 +02:00
Bill Burke cc9d6d0cf7 saml undertow sp 2015-09-22 20:27:08 -04:00
Marek Posolda b17bbc9b86 Merge pull request #1634 from pdrozd/sync-ldap-sleep
Added configurable sleep time
2015-09-22 16:18:45 +02:00
Pavel Drozd d4c5349e1a Added configurable sleep time 2015-09-22 15:29:21 +02:00
Bill Burke 2865a3c047 Merge pull request #1626 from dbarentine/master
KEYCLOAK-1861 Allow setting of signature algorithm when signing SAML …
2015-09-22 08:37:46 -04:00
Marek Posolda 522fc7412c Merge pull request #1632 from mposolda/master
KEYCLOAK-904 Offline tokens - step 1
2015-09-21 12:06:33 +02:00
mposolda 7ec3f86efb KEYCLOAK-904 Offline tokens 2015-09-21 10:28:30 +02:00
mposolda c11539cccb docs and javadoc fixes 2015-09-21 10:13:41 +02:00
Stian Thorgersen 09488b8df3 Merge pull request #1629 from tkyjovsk/master-squashed
Updates and refactoring of arquillian testsuite.
2015-09-18 15:12:12 +02:00
Tomas Kyjovsky e16cc493d2 Updates and refactoring of arquillian testsuite. 2015-09-18 14:27:28 +02:00
Stian Thorgersen 379fc8961e Merge pull request #1628 from stianst/master
Configure maven release plugin
2015-09-18 13:24:31 +02:00
Stian Thorgersen 43114f176b Configure maven release plugin 2015-09-18 13:23:54 +02:00
Stian Thorgersen f01d959f7c Merge pull request #1624 from tkyjovsk/serial-versions
Removed occurences of serialVersionUID from all classes.
2015-09-18 13:03:37 +02:00
Stian Thorgersen 28f4409768 Merge pull request #1623 from mstruk/asciidoc
KEYCLOAK-1241 Can't build release with Java 8
2015-09-18 13:03:02 +02:00
Stian Thorgersen 364aecda2a Merge pull request #1627 from stianst/master
KEYCLOAK-1858
2015-09-18 13:02:38 +02:00
Stian Thorgersen 9bfbac6be5 KEYCLOAK-1858
JavaDoc aggregate fails during release if build not already executed
2015-09-18 10:11:51 +02:00
Dane Barentine db20fd9eeb KEYCLOAK-1861 Allow setting of signature algorithm when signing SAML AuthnRequests to IDPs 2015-09-17 15:55:59 -07:00
Giriraj Sharma 53a198fde8 [KEYCLOAK-1787] Confirming password policy values with ENTER key deletes the first item in table 2015-09-17 23:56:17 +05:30
Bill Burke 861a13501a merge 2015-09-17 14:25:16 -04:00
Bill Burke 0f24bd2ea4 merge 2015-09-17 14:06:33 -04:00
Bill Burke 9dc54815eb Merge pull request #1616 from dbarentine/master
Bug fixes
2015-09-17 14:01:13 -04:00
Bill Burke cb8ca619ae saml sp 2015-09-17 14:00:57 -04:00
Tomas Kyjovsky ac91deac96 Removed occurences of serialVersionUID from all classes. 2015-09-17 17:27:39 +02:00
Marko Strukelj 71e2be5d3d KEYCLOAK-1241 Can't build release with Java 8
- Fix Null title in some build environments
2015-09-17 14:10:15 +02:00
Stian Thorgersen 4878073867 Merge pull request #1587 from mstruk/asciidoc
KEYCLOAK-1241 Can't build release with Java 8
2015-09-17 09:06:22 +02:00
Stian Thorgersen dc327ddddb Merge pull request #1621 from stianst/master
KEYCLOAK-1854
2015-09-17 08:36:08 +02:00
Stian Thorgersen e6467403ef Merge pull request #1600 from cfsnyder/master
KEYCLOAK-1807 Fix bug with commas in regex password policies
2015-09-17 08:26:56 +02:00
Stian Thorgersen cf0fab2d66 Merge pull request #1620 from lkubik/unifyJetty8Versions
Unify jetty 8.1 artifacts version with fabric8-bom-1.2.0.redhat-133.pom
2015-09-17 08:23:22 +02:00
Stian Thorgersen 2eaa03539c KEYCLOAK-1854
NPE in SystemInfoRepresentation if user.country or user.language not set
2015-09-17 07:38:37 +02:00
Lukas Kubik b7e49dc88d Unify jetty 8.1 artifacts version with fabric8-bom-1.2.0.redhat-133.pom 2015-09-16 17:14:29 +02:00
Marek Posolda ca05455aa0 Merge pull request #1619 from mstruk/kerberos
KEYCLOAK-1852 Improve Kerberos example documentation
2015-09-16 15:08:50 +02:00
Stian Thorgersen 7ae3eb8321 Merge pull request #1615 from ssilvert/breadcrumbs
Fix breadcrumbs.
2015-09-16 14:16:14 +02:00
Stan Silvert ae54babbbb Update client-credentials-jwt-key-import.html 2015-09-16 07:40:30 -04:00
Stan Silvert a8378fe84b Update client-credentials-jwt-key-export.html 2015-09-16 07:40:14 -04:00
Stian Thorgersen 85df0b6a67 Merge pull request #1613 from raehalme/KEYCLOAK-1832
KEYCLOAK-1832 Added check for null authentication on the logout method
2015-09-16 13:34:51 +02:00
Marko Strukelj 95967b9c79 KEYCLOAK-1852 Improve Kerberos example documentation and user experience 2015-09-16 12:22:56 +02:00
Marko Strukelj 8396b999a2 KEYCLOAK-1241 Can't build release with Java 8
- Speed up build by only building REST API doc during -Pjboss-release
2015-09-16 11:53:53 +02:00
Marko Strukelj 3bbe82057c KEYCLOAK-1241 Can't build release with Java 8
- Improve javadoc comments for new REST API documentation generation
2015-09-15 21:22:43 +02:00
Marko Strukelj 0c49fce78f KEYCLOAK-1241 Can't build release with Java 8 2015-09-15 21:22:43 +02:00
Stian Thorgersen f9af8ba1a0 Merge pull request #1614 from stianst/master
Fixes
2015-09-15 13:40:04 +02:00
Dane Barentine 80f91b5fa5 KEYCLOAK-1848 Fix consuming of metadata when EntityDescriptor includes multiple Descriptors 2015-09-14 15:04:54 -07:00
Dane Barentine 6478e8f5c7 KEYCLOAK-1847 Per SAML Spec 3.4.4.1 SigAlg in redirect binding should be URI not Java signature algorithm 2015-09-14 15:02:27 -07:00
Dane Barentine 55dc42e147 KEYCLOAK-1491 AttributeStatement must contain one or more attribute or encryptedattribute statements 2015-09-14 15:00:41 -07:00
Dane Barentine f55ab0d689 KEYCLOAK-1846 Per SAML spec 6.2 Encrypting assertions must happen after the assertions are signed 2015-09-14 15:00:41 -07:00
Dane Barentine fe79c9b01e KEYCLOAK-1845 Fixed relative path error which was omitting the themes on the EAP overlay 2015-09-14 14:58:56 -07:00
Dane Barentine 6291e90f9c KEYCLOAK-1844 Login endpoint needs to handle POST as well for SAML clients using HTTP-POST binding 2015-09-14 14:57:38 -07:00
Stan Silvert a32fefb597 Fix breadcrumbs. 2015-09-14 14:28:32 -04:00
Cory Snyder 3e04d045ee KEYCLOAK-1807 Fix bug with commas in regex password policies by using alternate way to declare multiple regex patterns 2015-09-11 11:00:31 -04:00
Stian Thorgersen fb4645a3dc KEYCLOAK-1833 Fix error messages for identity brokering 2015-09-10 21:15:55 +02:00
Thomas Raehalme e0eac89e5a Added check for null authentication on the logout method. 2015-09-10 12:30:07 +03:00
Thomas Raehalme 90d34bfd06 unsuccessfulAuthentication now returns HTTP response status 401 instead of 403. 2015-09-09 18:31:25 +03:00
Thomas Raehalme e58b5762f3 attemptAuthentication now throws KeycloakAuthenticationException if authentication fails.
Also authenticationFailureHandler is by default set to SimpleUrlAuthenticationFailureHandler
with default login url set to /sso/login.
2015-09-09 15:45:13 +03:00
Stian Thorgersen 3fd4d23bed Version bump 2015-09-09 11:27:21 +02:00
Marek Posolda 1c38bb7158 Merge pull request #1609 from mposolda/master
KEYCLOAK-1824 ClientIdAndSecretCredentialsProvider not found when dep…
2015-09-08 23:45:04 +02:00
mposolda 149ef706dd KEYCLOAK-1824 ClientIdAndSecretCredentialsProvider not found when deploying Fuse examples 2015-09-08 22:55:43 +02:00
Stan Silvert 75bd8d4627 Load admin messages through Themes. 2015-09-08 15:22:50 -04:00
Marek Posolda f1c40dd345 Merge pull request #1608 from mposolda/master
KEYCLOAK-1826
2015-09-08 21:01:52 +02:00
mposolda 6225ccfc06 KEYCLOAK-1826 2015-09-08 21:00:42 +02:00
Marek Posolda 34de631b2a Merge pull request #1607 from mposolda/master
KEYCLOAK-1821 KEYCLOAK-1825 Migration and export/import of clientAuth…
2015-09-08 20:28:04 +02:00
mposolda 86f0092622 KEYCLOAK-1821 KEYCLOAK-1825 Migration and export/import of clientAuthFlow + resetCredentialsFlow 2015-09-08 19:53:35 +02:00
Stan Silvert e455cbf319 Add new getMessages() method to Theme interface. 2015-09-08 13:28:17 -04:00
Stan Silvert cee2d69718 Update for use with Angualr 1.4 anti-watch feature. Also, limit sanitize
to params.  This avoids issue with Unicode.
2015-09-08 12:57:22 -04:00
Stan Silvert ff17123123 i18n for onoffswitch 2015-09-08 12:57:21 -04:00
Stan Silvert e118a06a09 Bundles now read from base theme instead of from classpath. Bundle names
no longer hard-coded.
2015-09-08 12:57:20 -04:00
Stan Silvert 4898d74c6d KEYCLOAK-1152 Initial commit for i18n support 2015-09-08 12:57:19 -04:00
Marek Posolda 76f3842dad Merge pull request #1606 from mposolda/master
Fix service-account demo app on EAP 6.4
2015-09-08 17:22:29 +02:00
mposolda d818ebdd9e Fix service-account demo app on EAP 6.4 2015-09-08 16:41:27 +02:00
Stian Thorgersen 4d90898dd9 Merge pull request #1605 from stianst/master
KEYCLOAK-1818
2015-09-08 09:56:06 +02:00
Stian Thorgersen 298b9e01d8 KEYCLOAK-1818
Authenticator example doesn't work when deployed as a module
2015-09-08 09:55:45 +02:00
Marek Posolda d0b08cacd8 Merge pull request #1604 from mposolda/master
KEYCLOAK-1811 Pluggable client authentication config through adapter …
2015-09-08 00:12:49 +02:00
mposolda 050c65a520 KEYCLOAK-1811 Pluggable client authentication config through adapter subsystem 2015-09-07 23:30:08 +02:00
Bill Burke be0c359160 adapter refactor 2015-09-07 10:27:57 -04:00
Bill Burke 3f792030d3 adapter refactor 2015-09-07 10:26:25 -04:00
Stian Thorgersen 5c2fc1120b Merge pull request #1603 from stianst/master
KEYCLOAK-1816
2015-09-07 13:32:29 +02:00
Stian Thorgersen 3d2acbe780 KEYCLOAK-1816
LocaleHelper prints info 'Locale en is not supported'
2015-09-07 13:02:52 +02:00
Stian Thorgersen bce0e0ea90 Merge pull request #1602 from stianst/master
Fixes
2015-09-07 10:36:48 +02:00
Stian Thorgersen 931102ff26 KEYCLOAK-1808
Revoke Grant button should disappear
2015-09-07 10:08:32 +02:00
Stian Thorgersen 5a3938d12f KEYCLOAK-1806
oauth-client example fails if you say no to grant
2015-09-07 09:59:32 +02:00
Stian Thorgersen dca1751a63 KEYCLOAK-1812 View user attributes in admin console doesn't work 2015-09-07 09:40:34 +02:00
Stian Thorgersen f6ec9af61e KEYCLOAK-1805
address theme causes exception for login theme
2015-09-07 09:33:34 +02:00
Stian Thorgersen 64f2f84ffa Merge pull request #1599 from stianst/master
KEYCLOAK-1804
2015-09-07 08:51:01 +02:00
Marek Posolda 5df5e53f11 Merge pull request #1601 from mposolda/master
KEYCLOAK-1799 Download adapter JSON config with proper adapter
2015-09-07 08:36:53 +02:00
mposolda 81f4c50574 KEYCLOAK-1799 Download adapter JSON config with proper adapter 2015-09-04 22:23:01 +02:00
Marek Posolda 2550d16127 Merge pull request #1598 from mposolda/master
KEYCLOAK-1801 Additional fix and cleanup
2015-09-04 22:21:37 +02:00
Bill Burke 333ad0efac refactor adapters 2015-09-04 15:56:28 -04:00
Stian Thorgersen f3675681c3 KEYCLOAK-1804
Replace -snapshot with startup time in resource urls
2015-09-04 16:55:32 +02:00
Stian Thorgersen 28de8dc5b7 Merge pull request #1597 from mstruk/KEYCLOAK-1779
KEYCLOAK-1779 NPE due to missing web.xml/jboss-web.xml
2015-09-04 16:14:55 +02:00
mposolda 35e63a9398 KEYCLOAK-1801 Additional fix and cleanup 2015-09-04 15:19:43 +02:00
Stian Thorgersen f23f1cc813 Merge pull request #1596 from stianst/master
KEYCLOAK-1803
2015-09-04 14:22:07 +02:00
Marko Strukelj b0095154d1 KEYCLOAK-1779 NPE due to missing web.xml/jboss-web.xml
- improved code readability and npe fix
2015-09-04 14:18:57 +02:00
Stian Thorgersen 79ea9ed314 KEYCLOAK-1803
On/off switches in mappers doesn't work
2015-09-04 14:17:30 +02:00
Marek Posolda 413db0dce1 Merge pull request #1595 from mposolda/master
Add 'Testsuite' prefix to the dummy providers used for testing only
2015-09-04 13:53:10 +02:00
William DeCoste e6745532ce KEYCLOAK-1779 2015-09-04 13:52:25 +02:00
Stian Thorgersen 59da0f90f8 Merge pull request #1594 from stianst/master
KEYCLOAK-1801
2015-09-04 13:37:32 +02:00
mposolda 76f0f52ee3 Add 'Testsuite' prefix to the dummy providers used for testing only 2015-09-04 13:17:20 +02:00
Stian Thorgersen 73c230f1ca KEYCLOAK-1801
Suggestions to improving client credentials tab
2015-09-04 12:55:25 +02:00
Marek Posolda ddee72c756 Merge pull request #1593 from mposolda/master
KEYCLOAK-1802
2015-09-04 12:46:15 +02:00
mposolda 6318964374 KEYCLOAK-1802 2015-09-04 12:21:45 +02:00
Stian Thorgersen 853f1af40d Merge pull request #1592 from stianst/master
KEYCLOAK-1794 Admin console issues with kc-provider-config directive
2015-09-04 11:43:30 +02:00
Stian Thorgersen d429b2151a KEYCLOAK-1800
Save buttons not aligned correctly on otp-policy and flow-bindings pages
2015-09-04 10:14:55 +02:00
Stian Thorgersen b223e1a7af KEYCLOAK-1794 Admin console issues with kc-provider-config directive 2015-09-04 09:59:48 +02:00
Stian Thorgersen c806b8911e Merge pull request #1590 from stianst/master
KEYCLOAK-1796 Tabs on Keycloak identity provider shown twice
2015-09-04 08:59:16 +02:00
Stian Thorgersen 9f30a51925 KEYCLOAK-1796 Tabs on Keycloak identity provider shown twice 2015-09-04 08:32:00 +02:00
Stian Thorgersen a8b7129269 Merge pull request #1585 from stianst/master
KEYCLOAK-1793 Remove cancel button on login and login-totp
2015-09-04 08:19:27 +02:00
Stian Thorgersen 991b0e8ee2 Merge pull request #1586 from suchabar/bsuchano-branch
My first PR - addition of extra info to Readme file
2015-09-04 08:19:12 +02:00
Marek Posolda e9d1475475 Merge pull request #1588 from mposolda/master
KEYCLOAK-1795 Add just one clientAuthenticatorType per client
2015-09-04 00:35:25 +02:00
mposolda bc189554aa KEYCLOAK-1795 Add just one clientAuthenticatorType per client 2015-09-04 00:09:54 +02:00
suchabar d0f26ae4cf Edited Readme file 2015-09-03 20:46:34 +02:00
suchabar ab6d247ef1 Edited Readme file 2015-09-03 20:43:16 +02:00
Stian Thorgersen fcc82a47e4 KEYCLOAK-1793 Remove cancel button on login and login-totp 2015-09-03 20:21:56 +02:00
Marek Posolda 25e53db96f Merge pull request #1584 from mposolda/master
KEYCLOAK-1760 KEYCLOAK-1697 DB fixes
2015-09-03 12:23:31 +02:00
mposolda 89660d06e5 KEYCLOAK-1697 Fix UserProvider.searchForUsersByAttribute 2015-09-03 11:47:24 +02:00
mposolda 493fd0ad6a KEYCLOAK-1760 Fix DB issues when schema option defined 2015-09-03 11:47:24 +02:00
Stian Thorgersen 11422524f3 Merge pull request #1583 from stianst/master
KEYCLOAK-1497 Success message is not displayed when assigning roles
2015-09-03 09:29:24 +02:00
Stian Thorgersen 957214ed78 KEYCLOAK-1497 Success message is not displayed when assigning roles 2015-09-03 08:52:05 +02:00
Bill Burke f013cca3b8 Merge pull request #1582 from patriot1burke/master
KEYCLOAK-1792
2015-09-02 18:00:35 -04:00
Bill Burke a1cfc0a0ff KEYCLOAK-1792 2015-09-02 17:17:57 -04:00
Bill Burke e8b3b3acf3 Merge pull request #1581 from patriot1burke/master
client session required actions
2015-09-02 17:10:20 -04:00
Bill Burke 0cfb03be03 Merge remote-tracking branch 'upstream/master' 2015-09-02 16:30:35 -04:00
Bill Burke 7d4b93e01e client session required actions 2015-09-02 16:30:16 -04:00
Marek Posolda 2f3793805b Merge pull request #1579 from mposolda/master
MSSQL Fix
2015-09-02 16:59:36 +02:00
mposolda a310c13d32 MSSQL Fix 2015-09-02 16:25:38 +02:00
Stian Thorgersen 38a721425d Merge pull request #1578 from stianst/master
KEYCLOAK-1791 Exception on logout on EAP 6.4 overlay
2015-09-02 15:25:45 +02:00
Marek Posolda dfc34d99c5 Merge pull request #1577 from mposolda/master
KEYCLOAK-1789 KEYCLOAK-1759 Export/import fixes
2015-09-02 14:49:23 +02:00
Stian Thorgersen 6c58fd03a4 KEYCLOAK-1791 Exception on logout on EAP 6.4 overlay 2015-09-02 14:40:43 +02:00
mposolda 5b9d1286cc KEYCLOAK-1789 KEYCLOAK-1759 Export/import fixes 2015-09-02 12:03:16 +02:00
Stian Thorgersen d9e330802c Merge pull request #1576 from jean-merelis/master
aligning translation pt-br with master
2015-09-02 09:25:28 +02:00
Stian Thorgersen 085de8a069 Merge pull request #1571 from ssilvert/ng-upgrade-fix-conflicts
KEYCLOAK-1781: Upgrade AngularJS to version 1.4.4
2015-09-02 09:24:26 +02:00
jean 5af4c63a3e aligning translation pt-br with master 2015-09-01 13:53:01 -03:00
Stian Thorgersen 5177365c28 Merge pull request #1574 from stianst/master
Fix loading resources from theme
2015-09-01 14:06:18 +02:00
Marek Posolda 4df5ff3004 Merge pull request #1573 from mposolda/master
KEYCLOAK-1780 documentation + Generic client authentication screen
2015-09-01 13:58:04 +02:00
Stian Thorgersen 00f6841dc7 Fix loading resources from theme 2015-09-01 13:39:35 +02:00
mposolda be8394158f KEYCLOAK-1780 documentation + Generic client authentication screen 2015-09-01 13:17:14 +02:00
Bill Burke fbf62b2a63 Merge pull request #1572 from patriot1burke/master
more mappers
2015-08-31 20:48:55 -04:00
Bill Burke a047fb947b docs 2015-08-31 16:24:09 -04:00
Bill Burke eec3a3d5c3 more mappers 2015-08-31 16:23:17 -04:00
Stan Silvert 9387de1d1a KEYCLOAK-1781: Upgrade AngularJS to version 1.4.4 2015-08-31 15:09:55 -04:00
Bill Burke b9c90f128a Merge pull request #1570 from patriot1burke/master
KEYCLOAK-1726
2015-08-31 14:46:38 -04:00
Bill Burke 5699efc0f5 KEYCLOAK-1726 2015-08-31 14:46:14 -04:00
Bill Burke 6ead008bf4 Merge pull request #1569 from patriot1burke/master
KEYCLOAK-1721
2015-08-31 13:18:08 -04:00
Bill Burke 34e52839f7 KEYCLOAK-1721 2015-08-31 13:17:45 -04:00
Bill Burke bd54e1c60c Merge pull request #1568 from patriot1burke/master
docs
2015-08-31 10:55:25 -04:00
Bill Burke 03006522e2 docs 2015-08-31 10:54:57 -04:00
Bill Burke 7492ae2990 Merge pull request #1567 from patriot1burke/master
refactor recover password
2015-08-31 10:53:29 -04:00
Bill Burke 6edf890699 Merge pull request #1549 from ahus1/ahus1_jetty_contenttype
KEYCLOAK-1776 / JettySessionTokenStore sets content type on restoring form values
2015-08-31 10:34:16 -04:00
Bill Burke 43fd24f02b Merge remote-tracking branch 'upstream/master' 2015-08-31 10:13:55 -04:00
Bill Burke 22ebb81650 refactor recover password 2015-08-31 10:13:42 -04:00
Bill Burke fd074278f7 Merge pull request #1566 from bdecoste/master
KEYCLOAK-1783
2015-08-30 08:50:47 -04:00
William DeCoste ad497a66cd KEYCLOAK-1783 2015-08-29 08:57:04 -07:00
Bill Burke 41275b0e91 Merge pull request #1564 from patriot1burke/master
KEYCLOAK-1375
2015-08-27 14:56:53 -04:00
Bill Burke b82502af1d KEYCLOAK-1375 2015-08-27 14:15:47 -04:00
Bill Burke 43f2199d46 Merge pull request #1561 from velias/KEYCLOAK-1739
KEYCLOAK-1739 - correct handling of diacritics from http request in KeycloakServer
2015-08-27 09:06:42 -04:00
Bill Burke d44541fc9e Merge pull request #1560 from girirajsharma/master
[KEYCLOAK-1767] Clients table is unsorted
2015-08-27 09:06:05 -04:00
Bill Burke 24147a3d84 Merge pull request #1562 from velias/KEYCLOAK-1741
KEYCLOAK-1741 - Login form keeps "Username or email" field value after reshown due validation error
2015-08-27 09:05:40 -04:00
Vlastimil Elias 244d879d00 KEYCLOAK-1741 - Login form keeps "Username or email" field value after
reshown due validation error
2015-08-26 15:39:41 +02:00
Vlastimil Elias f5f67a629e KEYCLOAK-1739 - correct handling of diacritics from http request in
KeycloakServer
2015-08-26 14:58:37 +02:00
Alexander Schwartz aad1d57502 KEYCLOAK-1776 / check content type on form submit 2015-08-25 17:35:10 +02:00
giriraj sharma cf75c2378f [KEYCLOAK-1767] Clients table is unsorted 2015-08-23 21:03:06 +05:30
Bill Burke 3a64c4d582 Merge pull request #1543 from raehalme/KEYCLOAK-1775
KEYCLOAK-1775 Basic auth no longer redirects on Spring Security
2015-08-21 21:06:00 -04:00
Bill Burke d36376ffcd Merge pull request #1559 from patriot1burke/master
totp and profile refactor
2015-08-21 20:59:51 -04:00
Bill Burke 434197c10d Merge remote-tracking branch 'upstream/master' 2015-08-21 18:30:52 -04:00
Bill Burke d4af694c6f refactor profile and totp update 2015-08-21 18:30:39 -04:00
Bill Burke f245b67036 totp refactor 2015-08-21 17:53:26 -04:00
Bill Burke 945673c7da Merge pull request #1558 from patriot1burke/master
refactor update password
2015-08-21 17:27:42 -04:00
Bill Burke c25967bd61 fix 2015-08-21 17:01:29 -04:00
Bill Burke 165fba6b9c refactor update password 2015-08-21 15:17:01 -04:00
Marek Posolda 76209dd899 Merge pull request #1555 from mposolda/master
KEYCLOAK-1295 Fixes and javadoc
2015-08-21 20:41:21 +02:00
Bill Burke 8c8cc53989 Merge pull request #1556 from patriot1burke/master
document bypassing CORS
2015-08-21 13:26:44 -04:00
Bill Burke 6f463196ef Merge pull request #1554 from patriot1burke/master
adapter fixes
2015-08-21 13:21:02 -04:00
mposolda b0e2624343 KEYCLOAK-1295 Fixes and javadoc 2015-08-21 19:00:31 +02:00
Bill Burke 99fda3a7cb document bypassing CORS 2015-08-21 11:43:13 -04:00
Bill Burke 457039d7ba fix NPE in adapter for invalid cors requests 2015-08-21 11:29:38 -04:00
Bill Burke eb4ffbca29 co-existence of bearer and basic auth 2015-08-21 11:02:56 -04:00
Marek Posolda c9afe8fcc4 Merge pull request #1553 from mposolda/master
KEYCLOAK-1295 Adapter support. Fixes
2015-08-21 09:20:49 +02:00
mposolda d8d6348f67 KEYCLOAK-1295 Adapter support. Fixes 2015-08-21 08:26:12 +02:00
mposolda 87f7ec5909 KEYCLOAK-1561 LDAPDn.getParentDn() return value is not a DN 2015-08-21 08:26:12 +02:00
mposolda 18583eb6ed Fix mongo 2015-08-21 08:26:12 +02:00
Bill Burke b9d0219f04 Merge pull request #1552 from patriot1burke/master
change reset password
2015-08-20 18:52:07 -04:00
Bill Burke d9cb1fc4a9 Merge remote-tracking branch 'upstream/master' 2015-08-20 17:43:54 -04:00
Bill Burke 1654be0a85 change reset password 2015-08-20 17:43:37 -04:00
Stian Thorgersen d5944163d6 Merge pull request #1551 from stianst/master
KEYCLOAK-1761 Remove address from registration and account management
2015-08-20 17:19:47 +02:00
Stian Thorgersen 5ca3a48094 KEYCLOAK-1723 Allow aud to be single field or array 2015-08-20 15:55:52 +02:00
Stian Thorgersen 1fb3d7cd3b KEYCLOAK-1161
web.xml example in the doc is incorrect
2015-08-20 13:40:35 +02:00
Stian Thorgersen f827b2dc0d KEYCLOAK-1130
security-deployment vs. secure-deployment in the documentation
2015-08-20 13:37:50 +02:00
Stian Thorgersen 0295824923 KEYCLOAK-1747
Deal with time inconsistency in keycloak.js
2015-08-20 13:29:32 +02:00
Stian Thorgersen 8fee0c946b Merge pull request #1550 from mstruk/KEYCLOAK-1777
KEYCLOAK-1777 Column \"USERFEDERA0_.REALMENTITY_ID\" not found ...
2015-08-20 12:26:13 +02:00
Stian Thorgersen bd13b8a5fe KEYCLOAK-1761 Remove address from registration and account management
KEYCLOAK-1762 Add example theme that adds address fields to registration, account management and admin console
2015-08-20 12:25:26 +02:00
Stian Thorgersen 743ea95a78 Upgraded instructions to upgrade OpenShift cartridge 2015-08-19 15:56:44 +02:00
Marko Strukelj 2998a0fa35 KEYCLOAK-1777 Column \"USERFEDERA0_.REALMENTITY_ID\" not found on Wildfly 10.0.0.Beta1 2015-08-18 18:10:39 +02:00
Alexander Schwartz 7b0a3989e2 JettySessionTokenStore sets content type on restoring form values
Closes: KEYCLOAK-1776
2015-08-18 15:32:27 +02:00
Stian Thorgersen 06fcb7595a Merge pull request #1548 from stianst/master
Updated Docker hub release instructions
2015-08-18 15:21:53 +02:00
Stian Thorgersen bd3c4d4215 Updated Docker hub release instructions 2015-08-18 15:21:32 +02:00
Stian Thorgersen b969d9edfa Merge pull request #1547 from cainj13/master
add missing tag start type to sample jboss configuration in docbook
2015-08-18 14:46:38 +02:00
Josh Cain 3ef0fb63a9 add missing tag start type to sample jboss configuration in docbook 2015-08-18 08:43:28 -04:00
Stian Thorgersen bf706a9191 Merge pull request #1546 from stianst/master
Updated release process docs
2015-08-18 14:42:55 +02:00
Stian Thorgersen 26be615a80 Updated release process to include updating openshit cartridge and docker images 2015-08-18 14:10:13 +02:00
Stian Thorgersen 81928eb61a Updated release process docs 2015-08-18 13:48:21 +02:00
Marek Posolda 126f517520 Merge pull request #1545 from mposolda/master
KEYCLOAK-1295 pluggable client authentication. Support authenticate c…
2015-08-18 10:54:01 +02:00
mposolda 7028496601 KEYCLOAK-1295 pluggable client authentication. Support authenticate clients with signed JWT 2015-08-17 23:21:23 +02:00
Thomas Raehalme 3a4897c7d2 Separated the error message for Bearer token and Basic authentication failures. 2015-08-17 22:36:59 +03:00
Thomas Raehalme b3f142d715 KeycloakAuthenticationProcessingFilter now handles Basic Authentication the same way as Bearer token. 2015-08-17 18:05:49 +03:00
Stian Thorgersen a4e16ca9c7 Merge pull request #1540 from ssilvert/master
Fix typos in doc.
2015-08-17 10:09:19 +02:00
Bill Burke 57176dee75 Merge pull request #1542 from patriot1burke/master
oops, .info messages
2015-08-16 17:28:30 -04:00
Bill Burke f87ba8a3a9 oops, .info messages 2015-08-16 17:28:07 -04:00
Bill Burke 8c0b33f902 Merge pull request #1541 from patriot1burke/master
reset password refactor
2015-08-16 17:26:49 -04:00
Bill Burke 51e927adf7 Merge remote-tracking branch 'upstream/master' 2015-08-16 16:41:08 -04:00
Bill Burke bf4b681506 tests 2015-08-16 16:40:39 -04:00
Bill Burke 3c88d2cc18 finish refactor 2015-08-16 15:38:00 -04:00
Bill Burke c7b5975ac1 reset password refactor 2015-08-16 15:20:16 -04:00
Stan Silvert 09901997c1 Fix typos in doc. 2015-08-16 14:59:31 -04:00
Bill Burke c0f3d851db reset password refactor/flow 2015-08-16 12:23:15 -04:00
Bill Burke 98b6344f03 Merge pull request #1539 from patriot1burke/master
fix holes
2015-08-15 11:37:20 -04:00
Bill Burke e4b6e4c167 Merge pull request #1523 from velias/KEYCLOAK-1731
KEYCLOAK-1731 - patched user attribute handling for update profile action
2015-08-15 11:30:22 -04:00
Bill Burke d6983e829a Merge remote-tracking branch 'upstream/master' 2015-08-15 10:39:44 -04:00
Bill Burke 374a2ad957 fix holes 2015-08-15 10:39:33 -04:00
Bill Burke 52fd2d7e75 Merge pull request #1538 from patriot1burke/master
refactor auth-spi, auth demo, and docs
2015-08-14 15:14:00 -04:00
Bill Burke 25bb0ade1b Merge remote-tracking branch 'upstream/master' 2015-08-14 14:39:10 -04:00
Bill Burke 6d7be80930 refactor auth-spi, auth demo, and docs 2015-08-14 14:38:59 -04:00
Bill Burke 1f13f6372a register required action 2015-08-14 12:03:37 -04:00
Bill Burke 39fcd84d53 Merge pull request #1537 from patriot1burke/master
auth spi docs and refactor
2015-08-14 08:53:21 -04:00
Bill Burke d11a83d6e2 stuff 2015-08-13 15:32:58 -04:00
Bill Burke 1978e23cfd Merge pull request #1536 from patriot1burke/master
auth spi docs and refactor
2015-08-13 13:47:24 -04:00
Bill Burke 4cc1a774df Merge remote-tracking branch 'upstream/master' 2015-08-13 13:02:27 -04:00
Bill Burke 8a23463328 auth spi refactor and doco 2015-08-13 11:28:11 -04:00
Stian Thorgersen fad2913665 Merge pull request #1535 from stianst/master
Remove user session entities from persistence.xml
2015-08-13 13:38:59 +02:00
Stian Thorgersen c4c27973f3 Remove user session entities from persistence.xml 2015-08-13 10:33:18 +02:00
Stian Thorgersen 2ae733bd07 Merge pull request #1534 from stianst/master
KEYCLOAK-1703 Remove jpa and mongo user session providers
2015-08-13 10:32:25 +02:00
Stian Thorgersen 7665b9f81e KEYCLOAK-1703 Remove jpa and mongo user session providers 2015-08-13 08:57:37 +02:00
Stian Thorgersen 248322c748 Merge pull request #1533 from stianst/master
KEYCLOAK-1702 Removed mem and none realm and user cache
2015-08-13 08:24:13 +02:00
Bill Burke 523bdd5ec9 doco 2015-08-12 20:37:51 -04:00
Stian Thorgersen a8ad00156b KEYCLOAK-1702 Removed mem and none realm and user cache 2015-08-12 16:55:23 +02:00
Stian Thorgersen 8f820713fa Merge pull request #1530 from lkubik/multipleDependencyDeclaration
Remove multiple declaration of jboss-logging dependency
2015-08-12 13:00:54 +02:00
Stian Thorgersen fc7d4b072c Merge pull request #1526 from mstruk/WF10
KEYCLOAK-1745 Keycloak fails to start on Wildfly 10.0.0.Alpha6
2015-08-12 11:51:11 +02:00
Bill Burke 1801526f65 auth spi doco 2015-08-11 17:44:06 -04:00
Bill Burke 58e37b6a3f Merge pull request #1532 from patriot1burke/master
refactor requiredactions, start doco
2015-08-11 13:52:07 -04:00
Bill Burke 0bd9cad6ad Merge remote-tracking branch 'upstream/master' 2015-08-11 13:04:51 -04:00
Bill Burke bcc2c893ef refactor requiredactions, start doco 2015-08-11 13:04:40 -04:00
Lukas Kubik ac71bbd4b5 Remove multiple declaration of jboss-logging dependency from testsuit/tomcat6/pom.xml 2015-08-10 15:16:28 +02:00
Stian Thorgersen ae94b30066 Merge pull request #1529 from grange74/KEYCLOAK-1724
KEYCLOAK-1724: Removed second security-constraint as it stops Tomcat from redirecting to Keycloak
2015-08-10 15:11:01 +02:00
nick.grange b3c307affe Removed second security-constraint as it seems to stop Tomcat from
redirecting users that aren’t logged in to Keycloak. Also added missing
tag start.
2015-08-10 22:27:52 +10:00
Bill Burke 03d3f4229e Merge pull request #1528 from patriot1burke/master
auth spi javadoc
2015-08-09 15:51:55 -04:00
Bill Burke c627b83cc5 Merge remote-tracking branch 'upstream/master' 2015-08-09 15:06:37 -04:00
Bill Burke 5469db311d document auth spi 2015-08-09 15:06:24 -04:00
Bill Burke 75793a36cf Merge pull request #1527 from patriot1burke/master
binding custom flows
2015-08-07 21:26:46 -04:00
Bill Burke d68603e4ea Merge remote-tracking branch 'upstream/master' 2015-08-07 19:00:19 -04:00
Bill Burke 33e402e7be binding custom flows 2015-08-07 19:00:07 -04:00
Marko Strukelj 375dce14e6 KEYCLOAK-1745 Keycloak fails to start on Wildfly 10.0.0.Alpha6 2015-08-07 14:56:14 +02:00
Bill Burke 08ae3aee50 Merge pull request #1525 from patriot1burke/master
hotp and otp policy
2015-08-06 17:43:46 -04:00
Bill Burke 1ad7d4f1d8 Merge remote-tracking branch 'upstream/master' 2015-08-06 16:55:16 -04:00
Bill Burke f9e8f1f7b7 hotp 2015-08-06 16:54:59 -04:00
Marek Posolda fa0b45625c Merge pull request #1524 from mposolda/master
Minor clustering improvements
2015-08-06 18:05:40 +02:00
mposolda c5459b2614 Update docker-cluster to keycloak 1.4 2015-08-06 17:29:08 +02:00
mposolda 8232773d97 Log more details about possible error in UserInfoEndpoint 2015-08-06 17:28:35 +02:00
Bill Burke 53b752ccfe Merge remote-tracking branch 'upstream/master' 2015-08-05 20:40:02 -04:00
Bill Burke 07efba364e hotp 2015-08-05 20:39:47 -04:00
Vlastimil Elias 2e52d8ea7a KEYCLOAK-1731 - patched user attribute handling for
login-update-profile.ftl form. Relevant tests added. Tests for user
attributes handling from register.ftl also added.
2015-08-05 17:07:21 +02:00
Marek Posolda a46a7a42a1 Merge pull request #1522 from mposolda/master
Clustering docs and distribution fixes
2015-08-05 13:34:39 +02:00
mposolda 060a193b48 KEYCLOAK-1732 Fix standalone.xml in demo distribution 2015-08-05 13:33:11 +02:00
mposolda 06ee06ae50 Update clustering docs as infinispan is default provider now 2015-08-05 13:32:40 +02:00
Marek Posolda 17a5a9f033 Merge pull request #1521 from mposolda/master
KEYCLOAK-1595 Don't send 401 from AuthorizeClientUtil if public clien…
2015-08-04 16:01:17 +02:00
mposolda e27a754f5f KEYCLOAK-1595 Don't send 401 from AuthorizeClientUtil if public client sent client_id parameter together with Authorization: Negotiate 2015-08-04 15:22:03 +02:00
Bill Burke 61d5ba6a92 Merge pull request #1520 from patriot1burke/master
fix javascript flo bug
2015-08-04 09:04:18 -04:00
Bill Burke eff0054b4a fix bug 2015-08-04 09:03:49 -04:00
Marek Posolda 99cd6c7383 Merge pull request #1519 from mposolda/master
LDAP & migration fixes
2015-08-04 14:14:56 +02:00
mposolda 5087392162 KEYCLOAK-1725 Fix migration from 1.1.0.Final on Oracle 2015-08-04 13:21:09 +02:00
mposolda 7474a31d95 KEYCLOAK-1562 better error reporting when missing UUID on ldap user record 2015-08-04 13:21:09 +02:00
mposolda a0197bc9da KEYCLOAK-1728 NPE during LDAP sync when some LDAP user doesn't have username 2015-08-04 13:21:09 +02:00
Bill Burke 3b2e679aed Merge pull request #1518 from patriot1burke/master
auth flow editing
2015-08-03 19:26:11 -04:00
Bill Burke 75d69a1ec1 Merge pull request #1516 from pfiled/proxy-header-inject-bug
Populate the KEYCLOAK_USERNAME header
2015-08-03 18:59:32 -04:00
Bill Burke 930fc66ebf flow editing 2015-08-03 18:58:14 -04:00
Bill Burke 04d3d26cb1 refactor execution model 2015-08-03 09:52:56 -04:00
Bill Burke de940ccff9 auth flow editing 2015-08-02 19:03:33 -04:00
Daniel Pfile aedc54cc89 Populate the KEYCLOAK_USERNAME header, this fixes the authenticate and roles-allowed constraints in the proxy. 2015-07-30 16:24:16 -05:00
Stian Thorgersen de3a776b9a Merge pull request #1515 from stianst/master
KEYCLOAK-1702 KEYCLOAK-1703 Make Infinispan default user session and …
2015-07-29 13:07:09 +02:00
Stian Thorgersen 5d6cc61d4d KEYCLOAK-1702 KEYCLOAK-1703 Remove mem user session provider 2015-07-29 12:02:27 +02:00
Stian Thorgersen f32b38cdbc KEYCLOAK-1702 KEYCLOAK-1703 Make Infinispan default user session and cache provider 2015-07-29 10:08:15 +02:00
Stian Thorgersen f3bfb06dec Version bump 2015-07-28 10:20:40 +02:00
Stian Thorgersen 630597746e Merge pull request #1514 from stianst/master
KEYCLOAK-1714 Add @JsonIgnoreProperties(ignoreUnknown = true) to JWSH…
2015-07-28 10:15:09 +02:00
Stian Thorgersen f98036296c KEYCLOAK-1716 NPE importing with empty database 2015-07-28 09:46:03 +02:00
Stian Thorgersen bf1f867f23 KEYCLOAK-1715 Cordova example doesn't work on Cordova 5.x 2015-07-28 08:36:01 +02:00
Stian Thorgersen 8215a85930 KEYCLOAK-1549
Migration for multiple attributes and LDAP mappers
2015-07-28 07:46:29 +02:00
Stian Thorgersen 10a5686955 KEYCLOAK-1714 Add @JsonIgnoreProperties(ignoreUnknown = true) to JWSHeader 2015-07-28 07:30:10 +02:00
Bill Burke 2e3c7a3acf Merge pull request #1512 from patriot1burke/master
canonicalization config
2015-07-27 15:33:27 -04:00
Bill Burke 06713da67b Merge remote-tracking branch 'upstream/master' 2015-07-27 11:57:21 -04:00
Bill Burke 46fb1b6582 canonicalization config 2015-07-27 11:57:08 -04:00
Stian Thorgersen 1b3f98db1e Merge pull request #1511 from stianst/master
UserInfo fix
2015-07-27 17:01:41 +02:00
Stian Thorgersen a190cdd8f2 KEYCLOAK-1712 Admin client example not working 2015-07-27 16:01:48 +02:00
Stian Thorgersen 8e25369001 KEYCLOAK-1711 Add get user info to js-console example 2015-07-27 15:43:52 +02:00
Stian Thorgersen 8d90ad816a KEYCLOAK-1710 UserInfoEndpoint throws NPE if user session is not found 2015-07-27 15:43:52 +02:00
Stian Thorgersen da9e42cb21 Merge pull request #1510 from stianst/master
KEYCLOAK-1709 Add standalone-keycloak-ha.xml to server overlays
2015-07-27 14:32:00 +02:00
Stian Thorgersen cbab3ff0d0 KEYCLOAK-1709 Add standalone-keycloak-ha.xml to server overlays 2015-07-27 14:31:40 +02:00
Stian Thorgersen 210b570c89 Merge pull request #1509 from stianst/master
Admin console fixes
2015-07-27 13:31:16 +02:00
Stian Thorgersen a2203df6a3 KEYCLOAK-1705 Logo not changed in admin console for logo example theme 2015-07-27 13:30:55 +02:00
Stian Thorgersen 6a2b369014 KEYCLOAK-1707 Can't export SAML keys 2015-07-27 13:00:22 +02:00
Stian Thorgersen fda6a6657f KEYCLOAK-1708 Authentication flows uses h2 in table 2015-07-27 12:32:55 +02:00
Stian Thorgersen 04565dad00 KEYCLOAK-1706 Service Account tab for clients displays title twice 2015-07-27 12:30:06 +02:00
Stian Thorgersen ac0ae06463 Merge pull request #1508 from stianst/master
KEYCLOAK-1694 Null Client Exception on OAuth Grant Page
2015-07-27 11:43:13 +02:00
Stian Thorgersen a8775f757f KEYCLOAK-1694 Null Client Exception on OAuth Grant Page 2015-07-27 09:59:50 +02:00
Stian Thorgersen e4f4ed923d Merge pull request #1507 from stianst/master
KEYCLOAK-1699 There are 3 failed tests when running testsuite with -P…
2015-07-27 09:57:52 +02:00
Stian Thorgersen c7915fa95d KEYCLOAK-1699 There are 3 failed tests when running testsuite with -Pinfinispan 2015-07-27 08:52:00 +02:00
Bill Burke 652b118634 Merge pull request #1506 from patriot1burke/master
timeout message
2015-07-25 15:27:51 -04:00
Bill Burke f122ff1471 Merge pull request #1505 from patriot1burke/master
login timeouts, verify email
2015-07-25 12:43:53 -04:00
Bill Burke f76b90fab9 timeout message 2015-07-25 12:43:46 -04:00
Bill Burke ccd8beae92 Merge remote-tracking branch 'upstream/master' 2015-07-25 12:16:05 -04:00
Bill Burke 33f01009d2 login timeouts, verify email 2015-07-25 12:13:41 -04:00
mposolda a0e3a71109 Fix infinispan - not finished 2015-07-25 12:05:16 +02:00
mposolda f35ecba801 Sybase - another attempt 2015-07-25 11:47:56 +02:00
Marek Posolda 0d7f26bd14 Merge pull request #1504 from mposolda/master
Migration
2015-07-25 11:36:04 +02:00
mposolda 2f7bdd2640 Fix migration version comparing bug 2015-07-25 09:00:50 +02:00
mposolda 3125e4ddd2 KEYCLOAK-1549 Mongo migration 2015-07-25 08:58:05 +02:00
Marek Posolda c624cb27da Merge pull request #1503 from mposolda/master
KEYCLOAK-1549 Migration for attributes and LDAP mappers - JPA
2015-07-24 23:29:28 +02:00
mposolda 06adf9a094 Sybase fix 2015-07-24 23:28:52 +02:00
mposolda 94ed55ee35 KEYCLOAK-1549 Migration for attributes and LDAP mappers - JPA 2015-07-24 23:09:48 +02:00
Marek Posolda 95c8603b69 Merge pull request #1502 from cwalker67/master
Added null email check in duplicate email check code
2015-07-24 23:04:46 +02:00
Charles Walker 9ad2a8272e quick return check for null email address, in reference to duplicate email check issue #1510 2015-07-24 16:08:26 -04:00
Charles Walker 6dc17da00a Merge pull request #1 from keycloak/master
merge updates
2015-07-24 15:55:34 -04:00
Marek Posolda 97aa1c6b2c Merge pull request #1501 from mposolda/master
Temporarily comment the test failing on Oracle and MSSQL as the funct…
2015-07-24 21:50:35 +02:00
mposolda 084fed8377 Temporarily comment the test failing on Oracle and MSSQL as the functionality is not used right now 2015-07-24 21:49:51 +02:00
Marek Posolda 68d86e4fa1 Merge pull request #1500 from mposolda/master
Fix JPA UserSession provider and MySQL
2015-07-24 20:46:46 +02:00
mposolda 5203373047 Fix JPA UserSession provider and MySQL 2015-07-24 20:39:39 +02:00
Stian Thorgersen 86de481ba1 Merge pull request #1499 from stianst/master
KEYCLOAK-1542
2015-07-24 17:30:29 +02:00
Stian Thorgersen 5d075a97dd Fixes to server-info 2015-07-24 16:45:58 +02:00
Stian Thorgersen e89499f5db Fix xmlns for modules in feature packs 2015-07-24 16:45:27 +02:00
Stian Thorgersen a1f0208767 Merge branch 'velias-KEYCLOAK-1542' 2015-07-24 14:48:10 +02:00
Stian Thorgersen d1964c20ab Refactored server-info and updated admin console 2015-07-24 14:47:37 +02:00
Marek Posolda 1e035bf2e5 Merge pull request #1498 from mposolda/master
Skip testDotInUsername for the MSAD configuration with sAMAccountName…
2015-07-24 13:03:24 +02:00
mposolda f3b87f9cf9 Skip testDotInUsername for the MSAD configuration with sAMAccountName as username 2015-07-24 13:01:54 +02:00
Stian Thorgersen d2ea45e1eb Merge pull request #1496 from stianst/master
KEYCLOAK-1691 and KEYCLOAK-1695
2015-07-24 12:52:19 +02:00
Marek Posolda 58ad6b1a40 Merge pull request #1497 from mposolda/master
Mongo model fix
2015-07-24 12:47:47 +02:00
mposolda 772ef3cd10 Mongo model fix 2015-07-24 12:46:47 +02:00
Stian Thorgersen 204dfd52c8 Merge branch 'KEYCLOAK-1542' of https://github.com/velias/keycloak into velias-KEYCLOAK-1542 2015-07-24 12:17:33 +02:00
Vlastimil Elias 244d3452d0 KEYCLOAK-1542 - removed unused code from the page template 2015-07-24 11:07:01 +02:00
Stian Thorgersen e65f8a7150 KEYCLOAK-1695 Upgrade to WildFly 9.0.1.Final 2015-07-24 10:44:15 +02:00
Stian Thorgersen 90d6991b9d KEYCLOAK-1691 Enable adapter subsystem to use with WildFly Swarm 2015-07-24 10:16:25 +02:00
Stian Thorgersen 87ca3f203a Merge pull request #1488 from stianst/master
KEYCLOAK-1506 Warning of Keycloak 1.3.1 on MySQL 5.6
2015-07-24 09:58:02 +02:00
Marek Posolda 3f3a20e178 Merge pull request #1494 from mposolda/master
KEYCLOAK-1693 Added test and possibility to create users with dot in …
2015-07-24 09:57:55 +02:00
mposolda ce1a19fdbe KEYCLOAK-1693 Added test and possibility to create users with dot in username 2015-07-24 09:33:16 +02:00
Marek Posolda 26ac92a6b1 Merge pull request #1493 from dylanplecki/issue-1693
KEYCLOAK-1693 LDAP DN parse error on escaped characters
2015-07-24 09:07:06 +02:00
Marek Posolda 1c7dd0a533 Merge pull request #1492 from mposolda/master
Simplify embedded server bootstrap in LDAP and Kerberos examples
2015-07-23 22:13:22 +02:00
Dylan Plecki ceb29d76b2 Fix regression in RegEx statements 2015-07-23 14:49:03 -05:00
Dylan Plecki 6efb354cce Fix LDAP DN component matching with negative lookbehind RegEx 2015-07-23 14:48:56 -05:00
Dylan Plecki 8ae242a6ed Fix LDAP RDN resolution based on unescaped comma split 2015-07-23 14:48:48 -05:00
mposolda 5f0f92fd15 Fix test to pass with MSAD 2015-07-23 21:39:40 +02:00
mposolda e521fa3554 Simplify embedded server bootstrap in LDAP and Kerberos examples 2015-07-23 21:17:40 +02:00
Marek Posolda b8f73cf21f Merge pull request #1491 from mposolda/master
Fix MSAD and OpenLDAP
2015-07-23 18:32:32 +02:00
mposolda d068cddbaf Fix MSAD and OpenLDAP 2015-07-23 18:03:12 +02:00
Bill Burke 99422835ab Merge pull request #1489 from patriot1burke/master
fix typo
2015-07-23 11:09:31 -04:00
Bill Burke 68263360c7 fix typo 2015-07-23 11:09:07 -04:00
Vlastimil Elias 34f5ddab0f Merge branch 'KEYCLOAK-1542' of https://github.com/velias/keycloak.git into KEYCLOAK-1542 2015-07-23 16:49:11 +02:00
Stian Thorgersen 0cc4630fc6 KEYCLOAK-1506 Warning of Keycloak 1.3.1 on MySQL 5.6 2015-07-23 16:46:06 +02:00
Vlastimil Elias ee57c79784 KEYCLOAK-1542 - rewrote showing info from providers to be generic 2015-07-23 16:40:57 +02:00
Vlastimil Elias 7e41b8df27 KEYCLOAK-1542 - code formatting cleanup 2015-07-23 16:40:56 +02:00
Vlastimil Elias 79c1d7bafa KEYCLOAK-1542 - code cleanup ahead of PR 2015-07-23 16:40:55 +02:00
Vlastimil Elias 652b2fee86 KEYCLOAK-1542 - Server Info page extended by info about DB and MongoDB.
Functional test for /serverinfo REST endpoint added.
2015-07-23 16:40:54 +02:00
Vlastimil Elias dfb871c26a KEYCLOAK-1542 - added system and memory info into "System Info" page 2015-07-23 16:40:53 +02:00
Vlastimil Elias 99f74acb94 KEYCLOAK-1542 - rewrote showing info from providers to be generic 2015-07-23 16:39:27 +02:00
Stian Thorgersen 83f7682606 Merge pull request #1487 from stianst/master
KEYCLOAK-1463
2015-07-23 15:53:50 +02:00
Stian Thorgersen c4a07f3098 KEYCLOAK-1463
Need better UI for Terms and Conditions
2015-07-23 14:35:57 +02:00
Stian Thorgersen c9451f4f35 Merge pull request #1486 from stianst/master
KEYCLOAK-1593 Move impersonate button on user details page
2015-07-23 14:24:49 +02:00
Stian Thorgersen dff4922783 KEYCLOAK-1593 Move impersonate button on user details page 2015-07-23 14:24:19 +02:00
Stian Thorgersen c05b666f3c Merge pull request #1483 from stianst/master
KEYCLOAK-1591 Issues with token settings page
2015-07-23 13:26:38 +02:00
Marek Posolda 9905024f08 Merge pull request #1485 from mposolda/service-acc
KEYCLOAK-401 Service account docs
2015-07-23 12:19:06 +02:00
mposolda b0cb457287 KEYCLOAK-401 Service account docs 2015-07-23 12:18:09 +02:00
Marek Posolda d4946c1c08 Merge pull request #1484 from mposolda/service-acc
KEYCLOAK-401 Service account refactoring and fixes
2015-07-23 12:09:33 +02:00
Stian Thorgersen 1d745b5cbd KEYCLOAK-1443 Add delete action to tables 2015-07-23 12:07:31 +02:00
mposolda c99785f266 KEYCLOAK-401 Service account refactoring and fixes 2015-07-23 11:29:52 +02:00
Stian Thorgersen 9ecdec3f45 KEYCLOAK-1591 Issues with token settings page 2015-07-23 11:23:53 +02:00
Stian Thorgersen 866f45bd95 Merge pull request #1479 from stianst/master
KEYCLOAK-1588 Strange version of slf4j not available in maven central
2015-07-23 09:17:21 +02:00
Bill Burke 320a79dbff Merge pull request #1482 from patriot1burke/master
better description
2015-07-22 14:47:16 -04:00
Bill Burke 1e0b6f1aad better description 2015-07-22 14:46:58 -04:00
Bill Burke 251ad6727a Merge pull request #1481 from patriot1burke/master
brute force fixes and enhancements
2015-07-22 14:46:29 -04:00
Bill Burke 1b1f56d183 ugh 2015-07-22 14:22:41 -04:00
Bill Burke 7dc05a45ac conflict 2015-07-22 14:20:52 -04:00
Bill Burke 7257bab289 brute force user ui 2015-07-22 14:16:09 -04:00
Bill Burke 48a76c2d0d test brute force 2015-07-22 12:30:52 -04:00
Stian Thorgersen d78c83b236 KEYCLOAK-1588 Strange version of slf4j not available in maven central 2015-07-22 16:27:34 +02:00
Bill Burke d9b0415047 brute force fixes, code cleanup, tests 2015-07-22 09:40:11 -04:00
Stian Thorgersen af2e3de96d Merge pull request #1474 from stianst/master
KEYCLOAK-1427
2015-07-22 14:30:45 +02:00
Vlastimil Elias 1c142cb170 KEYCLOAK-1542 - code formatting cleanup 2015-07-22 14:28:08 +02:00
Stian Thorgersen d5dae7d444 KEYCLOAK-1428 Disable buttons on forms instead of hiding 2015-07-22 14:05:47 +02:00
Vlastimil Elias 85816be967 KEYCLOAK-1542 - code cleanup ahead of PR 2015-07-22 13:35:56 +02:00
Stian Thorgersen e66d658955 KEYCLOAK-1428 Disable buttons on forms instead of hiding 2015-07-22 11:50:24 +02:00
Stian Thorgersen 1916fded95 Fix location of buttons on password-policy form 2015-07-22 11:50:23 +02:00
Stian Thorgersen 8cc8f4c49c Fix tests 2015-07-22 11:50:23 +02:00
Stian Thorgersen 1a3bf16729 KEYCLOAK-1434 Change edit action to buttons to make sure styles are correct 2015-07-22 11:50:23 +02:00
Stian Thorgersen 5304b533fc KEYCLOAK-1434 Add edit action to tables 2015-07-22 11:50:23 +02:00
Stian Thorgersen 0156d47d97 KEYCLOAK-1535 Set tooltip-placement correctly 2015-07-22 11:50:23 +02:00
Stian Thorgersen b04ac6cdba KEYCLOAK-1427 Add remove user button to all user tabs 2015-07-22 11:50:23 +02:00
Stian Thorgersen f43e4200da Removed title on password policy page 2015-07-22 11:50:23 +02:00
Stian Thorgersen 2ba7aef2b1 KEYCLOAK-1427 Add remove user federation button to all user federation tabs 2015-07-22 11:50:23 +02:00
Stian Thorgersen 7a1932cab4 KEYCLOAK-1427 Add remove identity provider button to all identity provider tabs 2015-07-22 11:50:23 +02:00
Stian Thorgersen 59f189229c KEYCLOAK-1427 Add remove client button to all client tabs 2015-07-22 11:50:23 +02:00
Stian Thorgersen 29af7a1d29 KEYCLOAK-1427 Added delete realm button to all realm settings tabs 2015-07-22 11:49:39 +02:00
Marek Posolda 3d9ddc53e6 Merge pull request #1477 from mposolda/service-acc
KEYCLOAK-401 Service accounts initial impl. Client credentials grant support. Demo
2015-07-22 11:37:55 +02:00
mposolda 1a34feda65 KEYCLOAK-401 Added service account demo 2015-07-22 11:07:57 +02:00
mposolda d8c1081578 KEYCLOAK-401 KEYCLOAK-941 Service accounts initial impl. Client credentials grant support 2015-07-22 10:55:50 +02:00
Bill Burke 1085a1da62 Merge pull request #1476 from patriot1burke/master
non-browser flow
2015-07-21 23:15:51 -04:00
Bill Burke 576db8e0e1 Merge remote-tracking branch 'upstream/master' 2015-07-21 20:56:22 -04:00
Bill Burke fe9dc4a28d non-browser flow 2015-07-21 20:56:05 -04:00
Stian Thorgersen d2aaae2340 Merge pull request #1475 from mstruk/KEYCLOAK-1496
KEYCLOAK-1496 Effective roles select element is not updated when addi…
2015-07-21 19:03:44 +02:00
Vlastimil Elias 84e40cbc2c KEYCLOAK-1542 - Server Info page extended by info about DB and MongoDB.
Functional test for /serverinfo REST endpoint added.
2015-07-21 16:09:47 +02:00
Marko Strukelj 42672a9ae2 KEYCLOAK-1496 Effective roles select element is not updated when adding composite client role 2015-07-21 15:59:21 +02:00
Stian Thorgersen 2dd2173553 Merge pull request #1473 from mstruk/KEYCLOAK-1560
KEYCLOAK-1560 IDENTITY_PROVIDER_LOGIN event is send twice
2015-07-21 10:28:32 +02:00
Marko Strukelj fcd5400cda KEYCLOAK-1560 IDENTITY_PROVIDER_LOGIN event is send twice 2015-07-21 09:49:37 +02:00
Marek Posolda 23b69bb7a7 Merge pull request #1467 from mposolda/master
LDAP and case-sensitivity fixes
2015-07-21 08:58:07 +02:00
mposolda c31b0945d8 Kerberos example README 2015-07-21 08:26:16 +02:00
mposolda c71a4ac4e8 KEYCLOAK-1545 KEYCLOAK-1551 Ensure that username and email are always saved to DB lowercased 2015-07-21 08:26:16 +02:00
mposolda 38c7ca64cb KEYCLOAK-1571 Error when the value of UUID LDAP attribute is the same of the Username LDAP attribute 2015-07-21 08:26:16 +02:00
Bill Burke bc187fe7b3 Merge pull request #1472 from patriot1burke/master
clean up client sessions
2015-07-20 19:17:31 -04:00
Bill Burke 548c0db0ae Merge remote-tracking branch 'upstream/master' 2015-07-20 12:21:57 -04:00
Bill Burke 3ecd1307b0 clean up client sessions 2015-07-20 12:21:48 -04:00
Vlastimil Elias b51661b790 KEYCLOAK-1542 - added system and memory info into "System Info" page 2015-07-20 17:11:04 +02:00
Stian Thorgersen 02d6e41ce3 Merge pull request #1471 from stianst/master
KEYCLOAK-1576
2015-07-20 15:21:51 +02:00
Stian Thorgersen f884aed25e KEYCLOAK-1576 2015-07-20 13:35:56 +02:00
Stian Thorgersen f2dee1a470 Add support for multi-part to MailServer util 2015-07-20 13:35:33 +02:00
Stian Thorgersen d5d806760f Merge branch 'ssilvert-KEYCLOAK-1414-cli-script-adapters' 2015-07-20 13:11:10 +02:00
Stian Thorgersen efe2a8f789 Merge branch 'KEYCLOAK-1414-cli-script-adapters' of https://github.com/ssilvert/keycloak into ssilvert-KEYCLOAK-1414-cli-script-adapters
Conflicts:
	docbook/reference/en/en-US/modules/jboss-adapter.xml
2015-07-20 13:10:51 +02:00
Stian Thorgersen 69bbed999f Merge pull request #1466 from ssilvert/KEYCLOAK-1415-server-cli-script
KEYCLOAK-1415 server cli script
2015-07-20 13:08:13 +02:00
Stian Thorgersen 5b7d4184f0 Merge pull request #1470 from stianst/master
Enabled testsuite/integration-arquillian on Travis
2015-07-20 11:52:13 +02:00
Stian Thorgersen 422b7ed5ef Enabled testsuite/integration-arquillian on Travis 2015-07-20 10:39:08 +02:00
Stian Thorgersen 66a2b916f2 Fix CRLF with LF 2015-07-20 07:48:02 +02:00
Stian Thorgersen 27ac253098 Merge pull request #1469 from Smartling/KEYCLOAK-1494-Fix
Support loading keycloak.json from the classpath
2015-07-20 06:48:14 +02:00
Scott Rossillo 1839b24b90 Support for loading keycloak.json from the classpath
Spring Boot and non-web based applications don't have a WEB-INF
directory. Support loading Spring Security adapter's keycloak.json
from the class path.
2015-07-19 12:10:33 -04:00
Bill Burke a60ebb6210 Merge pull request #1468 from patriot1burke/master
required action import/export
2015-07-18 09:06:39 -04:00
Bill Burke 4dba4f3c02 fix 2015-07-17 23:07:36 -04:00
Bill Burke 6727af2f35 required action import/export 2015-07-17 22:48:07 -04:00
Stan Silvert 5bcf334bc5 Don't add security-domain to server. 2015-07-17 12:48:32 -04:00
Stan Silvert ef49bd685e KEYCLOAK-1415 Add CLI scripts to WildFly and EAP overlay bundles. 2015-07-17 12:34:20 -04:00
Stan Silvert 092562fb94 KEYCLOAK-1414 Add CLI script for installing JBoss/WildFly/EAP adapters. 2015-07-17 12:23:10 -04:00
Bill Burke 44e2983803 Merge pull request #1462 from patriot1burke/master
migrate RequiredCredentials
2015-07-17 10:28:21 -04:00
Bill Burke 2e848da1a8 resolve conflicts 2015-07-17 09:45:53 -04:00
Stian Thorgersen 22ae4ecb23 Merge pull request #1464 from stianst/master
KEYCLOAK-1385 Introduce end-of-line normalization
2015-07-17 14:04:59 +02:00
Stian Thorgersen 1642ac2394 KEYCLOAK-1385 Introduce end-of-line normalization 2015-07-17 13:46:51 +02:00
Stian Thorgersen be8aa93cca Merge pull request #1463 from mstruk/remove-war
KEYCLOAK-1345 Remove distribution/subsystem-war
2015-07-17 13:26:34 +02:00
Marko Strukelj fc7ba85639 KEYCLOAK-1345 Remove distribution/subsystem-war 2015-07-17 12:41:00 +02:00
Stian Thorgersen 11d1dd6419 KEYCLOAK-1470 2015-07-17 11:46:02 +02:00
Stian Thorgersen e8bd7270e9 KEYCLOAK-1483 2015-07-17 11:22:04 +02:00
Stian Thorgersen 99e2afa81b KEYCLOAK-1498 2015-07-17 10:54:43 +02:00
Stian Thorgersen 676792d07d KEYCLOAK-1475 2015-07-17 10:33:18 +02:00
Stian Thorgersen 0bec2bcd1e KEYCLOAK-1504 2015-07-17 10:21:15 +02:00
Stian Thorgersen 25328048aa KEYCLOAK-1566 2015-07-17 10:09:28 +02:00
Bill Burke e51d2137cf migrate RequiredCredentials 2015-07-16 22:03:12 -04:00
Bill Burke 5695677873 Merge pull request #1458 from patriot1burke/master
idp initiated relaystate query param
2015-07-16 10:34:12 -04:00
Stian Thorgersen 9d86f582ac Merge branch 'girirajsharma-master' 2015-07-16 16:32:25 +02:00
Stian Thorgersen 97b0558f71 Merge branch 'master' of https://github.com/girirajsharma/keycloak into girirajsharma-master
Conflicts:
	forms/common-themes/src/main/resources/theme/base/admin/resources/partials/client-detail.html
	forms/common-themes/src/main/resources/theme/base/admin/resources/partials/role-detail.html
	forms/common-themes/src/main/resources/theme/base/admin/resources/partials/user-detail.html
2015-07-16 16:31:16 +02:00
Bill Burke e825be1c79 nonce in tokens 2015-07-16 10:17:44 -04:00
Stian Thorgersen 88252c3dfc Merge pull request #1457 from mstruk/keycloak-prod
KEYCLOAK-1331 Add product.conf and product module
2015-07-16 16:11:44 +02:00
Stian Thorgersen 02997b593f Merge pull request #1459 from stianst/master
Some fixes to integration-arquillian
2015-07-16 16:10:37 +02:00
giriraj sharma 9de81a0b14 Updated patternfly delete glyphicon css. 2015-07-16 18:28:56 +05:30
giriraj sharma ab13182091 [Keycloak-1427] Updated Delete icons with 'pointer' as hovering cursor. 2015-07-16 18:26:58 +05:30
Stian Thorgersen e75e4580ae Some fixes to integration-arquillian
Conflicts:
	testsuite/integration-arquillian/pom.xml
2015-07-16 14:49:38 +02:00
Bill Burke b7f031d199 Merge remote-tracking branch 'upstream/master' 2015-07-16 08:49:23 -04:00
Bill Burke 808d27be2d idp initiated relaystate query param 2015-07-16 08:48:07 -04:00
Marko Strukelj dcf8751ff7 KEYCLOAK-1331 Add product.conf and product module 2015-07-16 14:16:10 +02:00
Bill Burke ec6e3d80ee Merge pull request #1456 from patriot1burke/master
SAML IDP Initiated Login
2015-07-15 20:35:01 -04:00
Bill Burke 5a9badf683 relay state 2015-07-15 20:22:30 -04:00
Bill Burke dd11dcef93 docs 2015-07-15 20:18:14 -04:00
Bill Burke e9851957f0 Merge remote-tracking branch 'upstream/master' 2015-07-15 20:09:13 -04:00
Bill Burke 57cfbb3770 SAML IDP Initiated login 2015-07-15 20:08:55 -04:00
Bill Burke da2590819d Merge pull request #1455 from patriot1burke/master
export/import flows
2015-07-15 15:08:09 -04:00
Bill Burke d74d93a522 fix problems 2015-07-15 14:54:14 -04:00
Bill Burke b3eadcc990 Merge remote-tracking branch 'upstream/master' 2015-07-15 14:17:54 -04:00
Bill Burke f4d4405c20 export/import flows 2015-07-15 14:17:23 -04:00
Stian Thorgersen 1ebec0e2e5 Merge pull request #1454 from brmeyer/KEYCLOAK-1563
KEYCLOAK-1563 update docs for server/adapter subsystem split & WF 9.0…
2015-07-15 09:37:00 +02:00
Brett Meyer 4433347ff3 KEYCLOAK-1563 update docs for server/adapter subsystem split & WF 9.0.0.Final 2015-07-14 15:55:14 -04:00
Stian Thorgersen 08c539ba51 Merge pull request #1452 from stianst/master
KEYCLOAK-1530 Ability to specify default database schema
2015-07-14 15:21:08 +02:00
Stian Thorgersen 4e538dd138 KEYCLOAK-1530 Ability to specify default database schema 2015-07-14 14:34:04 +02:00
Stian Thorgersen 66373ccab2 Merge pull request #1451 from stianst/master
KEYCLOAK-1426 and KEYCLOAK-1565
2015-07-14 12:12:06 +02:00
Stian Thorgersen 9c82c0700d Merge pull request #1425 from girirajsharma/master
[KEYCLOAK-1430] Buttons in form headers should not be primary buttons
2015-07-14 12:04:45 +02:00
Stian Thorgersen a480e50c16 KEYCLOAK-1426 Updated icons in menu 2015-07-14 11:53:02 +02:00
Stian Thorgersen 4391bf4f70 KEYCLOAK-1565 Updated to PatternFly 1.3.0 2015-07-14 11:52:58 +02:00
Stian Thorgersen 18f46cb527 Merge pull request #1450 from stianst/master
KEYCLOAK-1426
2015-07-14 11:32:19 +02:00
Stian Thorgersen 32b89adc04 Wire up new menu 2015-07-14 11:19:44 +02:00
Stian Thorgersen 5a213fcad9 Merge branch 'KEYCLOAK-1426' of https://github.com/andresgalante/keycloak 2015-07-14 10:09:34 +02:00
Stian Thorgersen d6f1d1bb3c Merge pull request #1449 from gtudan/KEYCLOAK-1564
KEYCLOAK-1564: Add CORS-Headers to token requests by password credentials
2015-07-14 09:10:22 +02:00
Gregor Tudan c8c0d0e804 KEYCLOAK-1564: Add CORS-Headers to token requests by password credentials 2015-07-14 08:22:08 +02:00
Stian Thorgersen aeddf2a860 Merge pull request #1448 from ssilvert/KEYCLOAK-1547-infinispan-session-timeout
Keycloak 1547 infinispan session timeout
2015-07-13 19:13:59 +02:00
giriraj sharma b876a5f7bd [KEYCLOAK-1430] Buttons in form headers should not be primary buttons 2015-07-13 22:41:54 +05:30
Stan Silvert af8949c291 Change to make removeUserSession() a protected method. 2015-07-13 11:21:35 -04:00
Stian Thorgersen e3da38df7c KEYCLOAK-1538 Deploy server feature pack to maven repo 2015-07-13 16:47:58 +02:00
Stian Thorgersen a16079e38d Remove unused feature-packs-builds 2015-07-13 14:08:25 +02:00
Stian Thorgersen e13b0fac63 Merge pull request #1447 from mstruk/KEYCLOAK-1370
KEYCLOAK-1370 Empty module de.idyl.winzipaes in keycloak-server-dist
2015-07-13 13:05:12 +02:00
Marko Strukelj 26190350c4 KEYCLOAK-1370 Empty module de.idyl.winzipaes in keycloak-server-dist 2015-07-13 12:42:06 +02:00
Bill Burke 7598cc62d3 Merge pull request #1446 from patriot1burke/master
test impersonation
2015-07-12 10:40:43 -04:00
Bill Burke b3211fa8c2 tooltip 2015-07-12 10:24:15 -04:00
Bill Burke 8dcc909b6e Merge remote-tracking branch 'upstream/master' 2015-07-12 10:12:31 -04:00
Bill Burke fafaf2c490 test impersonate 2015-07-12 10:12:19 -04:00
Marek Posolda 11e2f19503 Merge pull request #1444 from mposolda/master
Use kc-provider-config in LDAP mappers
2015-07-11 23:29:00 +02:00
mposolda d67bd0eff2 Use kc-provider-config in LDAP mappers 2015-07-11 23:11:01 +02:00
Marek Posolda 43bbea9a7c Merge pull request #1443 from mposolda/master
JSON import issue from older versions. Fix import at startup if master realm not present
2015-07-11 19:21:28 +02:00
mposolda dc366c53a7 KEYCLOAK-1175 Import at startup can fail if master realm not present 2015-07-11 18:56:52 +02:00
mposolda fe1ede26be KEYCLOAK-1558 Can't import the file exported in 1.2.0.Beta1 through admin console 2015-07-11 18:56:52 +02:00
Bill Burke aca799b28c Merge pull request #1442 from patriot1burke/master
impersonation in admin console
2015-07-11 11:36:01 -04:00
Bill Burke 1017a0af1d Merge remote-tracking branch 'upstream/master' 2015-07-11 11:09:48 -04:00
Bill Burke ff25484a34 viewUser fixes 2015-07-11 11:01:26 -04:00
Marek Posolda af922920ab Merge pull request #1441 from mposolda/master
KEYCLOAK-1233 Admin console support for add/remove federated identity
2015-07-11 16:48:29 +02:00
Bill Burke 919a3f1b91 fixes 2015-07-11 10:30:23 -04:00
Bill Burke 1ec8e63e9e impersonation redo in admin console 2015-07-11 10:12:55 -04:00
Bill Burke 96c76a059a Merge remote-tracking branch 'upstream/master' 2015-07-11 10:10:37 -04:00
Bill Burke 608701aea7 impersonation redo in admin console 2015-07-11 10:10:05 -04:00
mposolda 142d44a01f KEYCLOAK-1233 Admin console support for add/remove federated identity 2015-07-11 14:08:49 +02:00
mposolda 83c0f537ce Minor update in docs 2015-07-11 11:29:46 +02:00
Bill Burke aeab25b7fe Merge pull request #1440 from patriot1burke/master
user impersonation
2015-07-10 21:21:39 -04:00
Bill Burke ef255c6a5c fix build errors 2015-07-10 21:02:25 -04:00
Bill Burke 474ebed0ee Merge remote-tracking branch 'upstream/master' 2015-07-10 20:39:15 -04:00
Bill Burke 6e55604dc3 impersonation 2015-07-10 20:38:43 -04:00
Marek Posolda 2dfdfefb1a Merge pull request #1438 from mposolda/master
KEYCLOAK-1531 LDAP example and update Kerberos example to use example…
2015-07-09 22:45:56 +02:00
Stan Silvert 48f78cf80a KEYCLOAK-1547 Need to use overridable removeUserSession() method. 2015-07-09 14:46:54 -04:00
mposolda 69cc28dd4b KEYCLOAK-1531 LDAP example and update Kerberos example to use example embedded LDAP 2015-07-09 19:55:37 +02:00
Marek Posolda adb8bcf791 Merge pull request #1437 from mposolda/master
KEYCLOAK-1505 Fix JS error in admin console on old browsers
2015-07-09 10:33:27 +02:00
mposolda bd22d30674 KEYCLOAK-1505 Fix JS error in admin console on old browsers 2015-07-09 10:20:55 +02:00
mposolda afbf1cc33f Comment fix 2015-07-09 10:18:52 +02:00
Bill Burke 485df59c5b Merge pull request #1436 from patriot1burke/master
recaptcha docs
2015-07-08 19:47:45 -04:00
Bill Burke 43308b326d Merge pull request #1435 from patriot1burke/master
role selector
2015-07-08 19:47:22 -04:00
Bill Burke 6c9708c700 recaptcha docs 2015-07-08 19:47:15 -04:00
Bill Burke 4a962aa75a Merge remote-tracking branch 'upstream/master' 2015-07-08 19:18:23 -04:00
Bill Burke e786158071 role selector 2015-07-08 19:18:11 -04:00
Marek Posolda ea5a767948 Merge pull request #1434 from mposolda/master
KEYCLOAK-1533 KEYCLOAK-1534
2015-07-08 21:19:54 +02:00
mposolda bde65a6c57 KEYCLOAK-1533 Handle importing LDAP user with duplicate email during authentication 2015-07-08 20:41:32 +02:00
mposolda 94c0a436b5 KEYCLOAK-1534 handle account management update email or username to the already existing value 2015-07-08 15:27:05 +02:00
mposolda bddf1adeba Improve description for object classes 2015-07-08 12:27:15 +02:00
Bill Burke 9406a577c2 Merge pull request #1431 from mstruk/wf9-version
KEYCLOAK-1512 Upgrade to WildFly 9.0.0.Final
2015-07-07 11:34:34 -04:00
Bill Burke 40344726e1 Merge pull request #1432 from mstruk/ispn-activator
KEYCLOAK-1529 Drop InfinispanCacheActivator and make subsystem do it
2015-07-07 11:34:15 -04:00
Bill Burke 08ffea23b7 Merge pull request #1433 from patriot1burke/master
config directive
2015-07-07 11:32:45 -04:00
Bill Burke f1ddaa8051 config directive 2015-07-07 11:31:28 -04:00
Marko Strukelj 7ae62c1060 KEYCLOAK-1529 Drop InfinispanCacheActivator and make subsystem do it 2015-07-07 16:40:03 +02:00
Marko Strukelj 7c51046d8a KEYCLOAK-1512 Upgrade to WildFly 9.0.0.Final 2015-07-07 14:13:13 +02:00
Bill Burke df6d75e2c5 Merge pull request #1427 from grange74/KEYCLOAK-1486
KEYCLOAK-1486 fixed User link in Clients' Active Sessions page
2015-07-06 17:57:53 -04:00
Bill Burke 3c88d9666d Merge pull request #1430 from patriot1burke/master
auth config ui
2015-07-06 17:56:16 -04:00
Bill Burke ee74025f38 Merge pull request #1429 from mikeazo/patch-1
fixed typo in closing th tag
2015-07-06 17:55:51 -04:00
Bill Burke d49c7d47a2 Merge remote-tracking branch 'upstream/master' 2015-07-06 17:44:52 -04:00
Bill Burke 8f18e9bbbc auth config ui 2015-07-06 17:44:39 -04:00
mikeazo be96a3785b fixed typo in closing th tag 2015-07-06 13:41:10 -04:00
Marek Posolda f3aeb5ec9f Merge pull request #1428 from mposolda/master
Embedded LDAP for examples. LDAP sync bugfixing
2015-07-04 22:46:54 +02:00
mposolda 71ea61e7a6 KEYCLOAK-1532 LDAP sync fixes and other bugfixing 2015-07-04 22:25:47 +02:00
mposolda c6c73e5e59 KEYCLOAK-1531 Added embedded LDAP for examples. Added module keycloak-util-embedded-ldap with common code for testsuite and examples 2015-07-04 21:06:24 +02:00
nick.grange ae242f8480 KEYCLOAK-1486 fixed User link in Clients' Active Sessions page
Changed User link in Clients' Active Sessions page to use userId
instead of username to show User details instead of Resource not found.
Renamed UserSessionRepresentation’s user attribute to username as it
was ambiguous and only used in 1 place (i.e. client-sessions.html).
2015-07-04 22:38:34 +10:00
Stian Thorgersen 351a17f68d Merge pull request #1426 from stianst/master
KEYCLOAK-1530
2015-07-03 15:18:52 +02:00
Stian Thorgersen 1c4f7cb339 KEYCLOAK-1530
Ability to specify default database schema
2015-07-03 14:56:33 +02:00
Andres Galante 2713af189f fixes realm selector when there are too many realms on the list 2015-07-02 16:55:42 -03:00
Andres Galante be62d1a915 styles new menu 2015-07-02 16:45:48 -03:00
Bill Burke 68d71a6767 Merge pull request #1423 from patriot1burke/master
display flows
2015-07-02 11:44:51 -04:00
Bill Burke 46c88ad1bf Merge remote-tracking branch 'upstream/master' 2015-07-02 11:26:28 -04:00
Bill Burke 917151123f display flows 2015-07-02 11:25:51 -04:00
Stian Thorgersen b9e9d6a787 Merge branch 'velias-KEYCLOAK-1421' 2015-07-02 14:16:42 +02:00
Stian Thorgersen db20077c37 Merge branch 'KEYCLOAK-1421' of https://github.com/velias/keycloak into velias-KEYCLOAK-1421
Conflicts:
	testsuite/integration/src/test/java/org/keycloak/testsuite/model/UserModelTest.java
2015-07-02 14:15:54 +02:00
Stian Thorgersen ec3d027f90 Merge pull request #1421 from stianst/master
KEYCLOAK-1507
2015-07-02 14:10:57 +02:00
Stian Thorgersen 50678085c9 Merge pull request #1403 from mstruk/KEYCLOAK-1484
KEYCLOAK-1484 Keycloak from server-dist and demo-dist doesn't start
2015-07-02 14:10:19 +02:00
Stian Thorgersen 5af4785ba1 KEYCLOAK-1507
Tomcat Adapter throws NPE under certain conditions
2015-07-02 09:08:40 +02:00
Stian Thorgersen f59d42d5d3 Merge pull request #1420 from girirajsharma/master
[KEYCLOAK-1435] Base URL on client table should open in new tab
2015-07-02 09:00:24 +02:00
giriraj sharma fc7ae1ee96 [KEYCLOAK-1435] Base URL on client table should open in new tab 2015-07-02 06:40:22 +05:30
Bill Burke 2699bb9a44 Merge pull request #1368 from girirajsharma/master
[KEYCLOAK-1427] Move delete buttons
2015-07-01 15:32:11 -04:00
Bill Burke 212f5b4082 Merge pull request #1410 from dbarentine/master
Spec compliance, bug fixes
2015-07-01 15:27:47 -04:00
Bill Burke 9591f48077 Merge pull request #1419 from patriot1burke/master
recapthca
2015-07-01 15:26:20 -04:00
Bill Burke 0a8494a0f2 Merge remote-tracking branch 'upstream/master' 2015-07-01 15:10:14 -04:00
Bill Burke 39f2a4ab71 repatcha 2015-07-01 15:10:04 -04:00
Bill Burke 39aa09ca36 form action refactor 2015-07-01 14:07:02 -04:00
Bill Burke 45c5a2ae78 Merge pull request #1418 from patriot1burke/master
registration flow
2015-06-30 13:19:18 -04:00
Bill Burke a1c612f833 remove old code 2015-06-30 12:47:34 -04:00
Bill Burke bc39bb32d4 Merge remote-tracking branch 'upstream/master' 2015-06-30 12:46:29 -04:00
Bill Burke 884308ecb5 reg flow 2015-06-30 12:46:10 -04:00
Marek Posolda 2d7f232c3d Merge pull request #1417 from mposolda/master
KEYCLOAK-1487 multivalued attributes support
2015-06-30 14:56:45 +02:00
Bill Burke afa65d9ead registration flow 2015-06-29 22:12:06 -04:00
mposolda 605c88a029 KEYCLOAK-1487 Multivalued support for UserAttribute protocol mapper. End-to-end LDAP example test including application 2015-06-29 21:45:47 +02:00
mposolda 09994d1730 KEYCLOAK-1487 Support for multiple values of one UserModel attribute. LDAP multivalued attribute support 2015-06-29 14:56:40 +02:00
girirajSharma bb9c99ebf6 [KEYCLOAK-1427] Move delete buttons 2015-06-28 14:31:40 +05:30
Marek Posolda d4819886a6 Merge pull request #1416 from mposolda/master
LDAP mappers fixes
2015-06-26 14:43:10 +02:00
mposolda 23445123a2 KEYCLOAK-1490 Possibility to always read user attribute values from LDAP 2015-06-26 14:06:31 +02:00
mposolda 773bb43b41 KEYCLOAK-1487 Fix LDAP case-sensitivity. Show warning in case of duplicate username 2015-06-25 19:27:22 +02:00
mposolda 493dddde02 Mongo fix 2015-06-25 19:24:50 +02:00
Bill Burke 2e5704c6b4 Merge pull request #1413 from patriot1burke/master
refactor auth spi into additional form spi
2015-06-24 21:29:26 -04:00
Bill Burke be6c843bba Merge remote-tracking branch 'upstream/master' 2015-06-24 21:07:51 -04:00
Bill Burke 064d677fdc form auth 2015-06-24 21:07:38 -04:00
Marek Posolda 084ab782da Merge pull request #1412 from mposolda/master
KEYCLOAK-1501 Fix osgi packaging. Improve fuse demo example
2015-06-24 16:43:09 +02:00
mposolda 1a10a1ef75 KEYCLOAK-1501 Fix osgi packaging and fuse demo. Improve example 2015-06-24 16:26:05 +02:00
mposolda acc77e4e6c Remove ClientConnectionFilter filter mappings from web.xml in distribution 2015-06-24 11:10:22 +02:00
Stian Thorgersen 2c0ff9be60 Merge pull request #1407 from ssilvert/enforcer
Add enforcer plugin to enforce maven version.
2015-06-23 18:42:18 +02:00
Dane Barentine b9f5946cf0 [KEYCLOAK-1493] Added explicit dependency on keycloak-saml-core 2015-06-22 14:50:04 -07:00
Dane Barentine c403968fa8 [KEYCLOAK-1493] Added explicit dependency on keycloak-saml-core 2015-06-22 11:07:29 -07:00
Dane Barentine 14baef425e [KEYCLOAK-1493] Added a couple of WSTrust constants 2015-06-22 11:07:23 -07:00
Dane Barentine 8da532da93 [KEYCLOAK-1492] Fix mapClaim when nested attribute already exists 2015-06-22 11:00:40 -07:00
Dane Barentine facf701897 [KEYCLOAK-1491] SAML Spec compliance. NameIDFormat is optional, AttributeStatement must contain one or more attribute or encryptedattribute statements 2015-06-22 10:58:13 -07:00
Vlastimil Elias f9fe9ea5d6 rebased to latest keycloak/master 2015-06-22 10:48:54 +02:00
Vlastimil Elias f5a80c3007 KEYCLOAK-1421 patched source formatting 2015-06-22 10:37:27 +02:00
Vlastimil Elias 7cff37e707 KEYCLOAK-1421 Added timestamp of keycloak user creation into user models
and persistence
2015-06-22 10:37:26 +02:00
Vlastimil Elias 4e8c6b3fc4 KEYCLOAK-1421 patched source formatting 2015-06-22 10:33:57 +02:00
Vlastimil Elias 82282c1c75 KEYCLOAK-1421 - user created date added to the admin console 2015-06-22 10:32:39 +02:00
Vlastimil Elias d7379f29da KEYCLOAK-1421 Added timestamp of keycloak user creation into user models
and persistence
2015-06-22 10:32:37 +02:00
Bill Burke 000159226d refactor 2015-06-21 12:09:22 -04:00
Bill Burke 4ebdb8d24b refactor 2015-06-21 11:52:30 -04:00
Bill Burke fc2df08e15 ClientSessionModel.getNotes() 2015-06-20 09:07:54 -04:00
Bill Burke aaa83dc19a Merge pull request #1408 from patriot1burke/master
make authenticator config optional
2015-06-19 21:17:23 -04:00
Bill Burke adff0d5da0 make authenticator config optional 2015-06-19 21:16:45 -04:00
Stan Silvert 285d6931bc Add enforcer plugin to enforce maven version. 2015-06-19 18:14:25 -04:00
Bill Burke 114b687c5c Merge pull request #1406 from patriot1burke/master
refactor registration and console pages
2015-06-19 18:06:12 -04:00
Bill Burke a26ade3988 refactor registration and console pages 2015-06-19 17:51:59 -04:00
Bill Burke 94e2983310 Merge pull request #1405 from patriot1burke/master
cleanup client sessions
2015-06-19 16:23:31 -04:00
Bill Burke fb2f5f6756 Merge remote-tracking branch 'upstream/master' 2015-06-19 14:44:00 -04:00
Bill Burke d7b818cba2 cleanup client sessions 2015-06-19 14:43:40 -04:00
Bill Burke 8d885d14ed Merge pull request #1404 from patriot1burke/master
handle page refresh better
2015-06-18 20:16:29 -04:00
Bill Burke 39e0023a5f Merge remote-tracking branch 'upstream/master' 2015-06-18 20:01:34 -04:00
Bill Burke 84faac0cd6 handle page refresh better 2015-06-18 20:01:12 -04:00
Bill Burke 1bce639d35 refactor flow first phase 2015-06-18 16:48:28 -04:00
Marko Strukelj f2061610b9 KEYCLOAK-1484 Keycloak from server-dist and demo-dist doesn't start 2015-06-18 20:36:32 +02:00
Bill Burke 8716f9b41a Merge pull request #1401 from mstruk/KEYCLOAK-1476
KEYCLOAK-1476 NotSerializableException: org.keycloak.models.cache.entities.CachedClientRole
2015-06-17 17:36:02 -04:00
Bill Burke a24c817bb7 Merge pull request #1402 from patriot1burke/master
cleanup authenticators
2015-06-17 17:34:57 -04:00
Bill Burke 47997e0056 Merge remote-tracking branch 'upstream/master' 2015-06-17 17:15:16 -04:00
Bill Burke 70fd7bea99 cleanup authenticators 2015-06-17 17:15:01 -04:00
Marko Strukelj 52565375b3 KEYCLOAK-1476 NotSerializableException: org.keycloak.models.cache.entities.CachedClientRole
- Remove noop code (Enum serialization 101 - http://docs.oracle.com/javase/6/docs/platform/serialization/spec/serial-arch.html#6469)
2015-06-17 22:05:32 +02:00
Bill Burke 2c327d9eee Merge pull request #1389 from patriot1burke/master
access code checks
2015-06-17 15:59:23 -04:00
Stian Thorgersen caeb710444 KEYCLOAK-1476 2015-06-17 19:34:41 +02:00
Marko Strukelj 0b0b101184 KEYCLOAK-1476 NotSerializableException: org.keycloak.models.cache.entities.CachedClientRole
Conflicts:
	model/api/src/main/java/org/keycloak/models/AuthenticationExecutionModel.java
2015-06-17 19:34:38 +02:00
Bill Burke f5b4a0788e timeout message 2015-06-17 10:16:21 -04:00
Bill Burke 1aa338fe3e Merge remote-tracking branch 'upstream/master' 2015-06-17 09:43:14 -04:00
Bill Burke 5615d8d870 required actions edit 2015-06-17 09:42:58 -04:00
Stian Thorgersen 9711ccd914 Merge pull request #1397 from stianst/master
Fixes
2015-06-17 15:11:33 +02:00
Stian Thorgersen fbc2b845ad KEYCLOAK-1476 NotSerializableException: org.keycloak.models.cache.entities.CachedClientRole 2015-06-17 14:05:55 +02:00
Stian Thorgersen 39ecca0989 KEYCLOAK-1479 2015-06-17 13:53:11 +02:00
Stian Thorgersen f19b6afd85 Fix demo-dist build prob 2015-06-17 13:53:11 +02:00
Stian Thorgersen dca347398d Make it possible to specify ldif file for LDAPEmbeddedServer 2015-06-17 13:53:11 +02:00
Stian Thorgersen de6341bd87 Fix demo-dist build prob 2015-06-17 13:53:11 +02:00
mposolda 5cb9dbb87a Reduce liquibase logging during test to debug 2015-06-17 12:15:30 +02:00
Bill Burke dddc5181e7 required actions storage/display 2015-06-16 22:48:39 -04:00
Bill Burke 3b78fa2d5d required actions model 2015-06-16 18:17:38 -04:00
Bill Burke 2a64f5e3ce Merge remote-tracking branch 'upstream/master' 2015-06-16 09:30:07 -04:00
Bill Burke 8f5b53e3ce clientsession timeout checks 2015-06-16 09:29:36 -04:00
Stian Thorgersen 605f5decb3 Merge pull request #1392 from mstruk/KEYCLOAK-1448
KEYCLOAK-1448 Cannot configure an authenticator for method KEYCLOAK
2015-06-16 14:11:28 +01:00
Marko Strukelj d00e128920 KEYCLOAK-1448 Cannot configure an authenticator for method KEYCLOAK 2015-06-16 14:51:31 +02:00
Stian Thorgersen 226c1c53c0 Merge pull request #1390 from stianst/master
Add missing ExampleDS
2015-06-16 13:40:36 +01:00
Stian Thorgersen 001b874903 Add missing ExampleDS 2015-06-16 14:40:19 +02:00
Stian Thorgersen cc523ea356 Merge pull request #1388 from stianst/master
Fixes
2015-06-16 13:03:10 +01:00
Stian Thorgersen 5dc2b7b1d5 KEYCLOAK-1446
Field ... of subresource ... will not be injected according to spec
2015-06-16 14:02:21 +02:00
Bill Burke cd84e78b27 access code checks 2015-06-16 07:59:53 -04:00
Stian Thorgersen dedaa24972 Updated clustering docs 2015-06-16 13:31:58 +02:00
Stian Thorgersen 1b0c4e5d1f KEYCLOAK-1468
Infinispan cache not available in JNDI
2015-06-16 13:31:51 +02:00
Stian Thorgersen b7e3fc5f73 Recover server-overlay name 2015-06-16 08:11:15 +02:00
Stian Thorgersen 9b9ec09788 Merge pull request #1384 from stianst/master
Fix event-store example
2015-06-16 06:21:30 +01:00
Bill Burke bd7ceb0b73 Merge pull request #1383 from patriot1burke/master
verify clientsession actions
2015-06-15 18:28:17 -04:00
Bill Burke 9638c0dd83 verify clientsession actions 2015-06-15 18:04:55 -04:00
Stian Thorgersen 60f40544bb Fix event-store example 2015-06-15 20:24:32 +02:00
Stian Thorgersen 066fb7178d Merge pull request #1382 from stianst/master
Added wildfly extension to dist
2015-06-15 19:14:05 +01:00
Stian Thorgersen cd762e5e8c Added wildfly extension to dist 2015-06-15 20:13:20 +02:00
Stian Thorgersen f990d68cee Merge pull request #1380 from stianst/master
Fixes
2015-06-15 15:04:31 +01:00
Bill Burke 88f14b39a7 Merge pull request #1378 from patriot1burke/master
auth spi
2015-06-15 09:50:05 -04:00
Stian Thorgersen eda64584d7 Update keycloak-server.json 2015-06-15 15:49:55 +02:00
Bill Burke 2f2a2dced6 Merge remote-tracking branch 'upstream/master' 2015-06-15 09:28:25 -04:00
Bill Burke 38a2ea2fdf fix merge conflict mistakes 2015-06-15 09:28:11 -04:00
Bill Burke 43bad9a608 merge 2015-06-15 09:02:15 -04:00
Stian Thorgersen be5f3086ce KEYCLOAK-1449 Demo bundle doesn't include subsystem configuration 2015-06-15 15:01:22 +02:00
Stian Thorgersen 663f12d5e6 Merge pull request #1376 from stianst/master
Fixes
2015-06-15 14:00:09 +01:00
Stian Thorgersen 6e758d721d Fix CDI examples 2015-06-15 14:21:27 +02:00
Stian Thorgersen 4c98b04ab7 KEYCLOAK-1447 LinkageError deploying oauth-client-cdi to WildFly 8.2.0.Final 2015-06-15 13:22:36 +02:00
Stian Thorgersen f846645989 Update adapter installation docs 2015-06-15 09:03:50 +02:00
Stian Thorgersen 6bc79b590c Renamed eap6 server overlay poms 2015-06-15 09:03:50 +02:00
Stian Thorgersen 2ad7e870d8 Merge pull request #1374 from stianst/master
Fix testsuite/docker-cluster deps
2015-06-15 06:41:11 +01:00
Stian Thorgersen 87636669ae Fix testsuite/docker-cluster deps 2015-06-15 07:40:19 +02:00
Stian Thorgersen 8d627f1329 Merge pull request #1369 from stianst/master
KEYCLOAK-1411
2015-06-15 06:32:49 +01:00
Bill Burke c51cc4703b kerberos fixes 2015-06-14 20:58:02 -04:00
mposolda a1124c9e1f KEYCLOAK-1260 Upgrade h2 version to fix locking issues in SAMLKeyCloakServerBrokerWithSignatureTest 2015-06-12 19:58:27 +02:00
mposolda 20e245cb05 KEYCLOAK-1298 Fix constraint names to be uppercased 2015-06-12 19:17:12 +02:00
mposolda 5c8e165080 Enable liquibase trace logging with JPA profile 2015-06-12 17:20:57 +02:00
mposolda afe088a9e8 Fix Oracle together with Sybase 2015-06-12 17:20:38 +02:00
Stian Thorgersen 162f31baa2 Update server and adapter install docs 2015-06-12 16:14:03 +02:00
Stian Thorgersen 28a50df746 KEYCLOAK-1411
DefaultCacheUserProvider addUser returns UserModel instance which is not cached/managed by the cache
2015-06-12 15:33:22 +02:00
Stian Thorgersen 5a0d600322 Merge pull request #1367 from stianst/master
Bump version
2015-06-12 13:36:42 +01:00
Stian Thorgersen 38c1945ce4 Bump version 2015-06-12 14:35:34 +02:00
Stian Thorgersen 939527bd98 Bump version 2015-06-12 14:32:06 +02:00
Stian Thorgersen cc2de52a1a Revert to old RestEasy until we can drop support for EAP 6.4 2015-06-12 14:20:08 +02:00
Stian Thorgersen 4ccc37abbb Add EAP6 standalone.xml to source instead of dl eap6 from techpreview repo 2015-06-12 14:20:08 +02:00
Stian Thorgersen 47d1681e90 Merge pull request #1365 from stianst/master
Error page is displayed if user rejects sign in with social provider
2015-06-12 13:03:08 +01:00
Stian Thorgersen c89a412661 KEYCLOAK-1321
Error page is displayed if user rejects sign in with social provider
2015-06-12 13:32:30 +02:00
Stian Thorgersen 5bd53804f9 Fix admin-api to show that users are retrieved by ip, not username 2015-06-12 13:32:30 +02:00
Stian Thorgersen 0d957311b4 Merge pull request #1364 from mstruk/wf9cr2
KEYCLOAK-1441 Upgrade to WildFly 9 CR2
2015-06-12 11:30:42 +01:00
Marko Strukelj c2495acca9 KEYCLOAK-1441 Upgrade to WildFly 9 CR2 2015-06-12 11:49:36 +02:00
Marek Posolda c297b29a13 Merge pull request #1363 from mposolda/master
KEYCLOAK-1403 Update liquibase to newest version. Fix Sybase
2015-06-12 11:26:09 +02:00
mposolda 112ebf77d5 KEYCLOAK-1403 Update liquibase to newest version. Fix Sybase 2015-06-12 11:11:28 +02:00
Stian Thorgersen 5993d40fab Merge pull request #1353 from Smartling/KEYCLOAK-1438
Fix Spring Security adapter logout handling
2015-06-12 07:50:00 +01:00
Stian Thorgersen 2d82d15e5b Merge pull request #1361 from ssilvert/KEYCLOAK-1083-unlock-user-account
KEYCLOAK-1083: Provide a way for admin to unlock user account
2015-06-12 07:44:07 +01:00
Stian Thorgersen 656b157103 Merge pull request #1360 from mstruk/fix-poms
Fixed pom issues that were generating tons of Maven warnings
2015-06-12 07:43:38 +01:00
Bill Burke 392fa21f1e finish reg 2015-06-11 21:15:53 -04:00
Bill Burke fa99b5415d flow alias lookup 2015-06-11 18:02:49 -04:00
Marek Posolda 514417ac2d Merge pull request #1362 from mposolda/master
KEYCLOAK-1405 Fix MSSQL Server
2015-06-11 22:37:16 +02:00
mposolda 938cfe2555 KEYCLOAK-1405 Fix MSSQL Server 2015-06-11 22:23:45 +02:00
Stan Silvert d6e64a2c5e KEYCLOAK-1083: Provide a way for admin to unlock user account 2015-06-11 15:32:03 -04:00
Bill Burke c52d16da6d default required actions in model 2015-06-11 15:18:09 -04:00
Bill Burke 3f62cd9271 terms and conditions 2015-06-11 14:39:08 -04:00
Marek Posolda df7cb4a9d0 Merge pull request #1359 from mposolda/master
Database fixes
2015-06-11 17:14:19 +02:00
Marko Strukelj 9a37696d29 Fixed pom issues that were generating tons of Maven warnings 2015-06-11 16:57:33 +02:00
mposolda 20fe7ec7b8 Database fixes 2015-06-11 16:56:38 +02:00
Stian Thorgersen 37cef49565 Merge pull request #1357 from mstruk/eap6
KEYCLOAK-1412 Server-overlay for EAP 6.4
2015-06-11 15:00:20 +01:00
Stian Thorgersen b5ee395aac Merge pull request #1358 from tkyjovsk/master
fixed some UI tests broken by KEYCLOAK-1431
2015-06-11 13:56:23 +01:00
fkiss 7b89b80f71 added ignore on role mappings test 2015-06-11 14:37:12 +02:00
Tomas Kyjovsky 08f2b0dea9 fixed UI tests broken by KEYCLOAK-1431 2015-06-11 14:15:05 +02:00
Marko Strukelj 92e17f4b40 KEYCLOAK-1412 Server-overlay for EAP 6.4
- Added as7-server-subsystem
 - Added eap6-server-overlay
 - Moved modules to eap6-server-modules
 - Renamed wildfly-server-subsystem to wf9-server-subsystem for consistency
2015-06-11 09:40:47 +02:00
Stian Thorgersen b8aedd5a3a Merge pull request #1356 from matzew/ImportFix
Applying suggested import change from mstruk 💄
2015-06-11 08:06:27 +01:00
Matthias Wessendorf d3e178d459 Applying suggested import change from mstruk 💄 2015-06-11 08:52:53 +02:00
Stian Thorgersen 996d8e8cd3 Merge pull request #1355 from stianst/master
KEYCLOAK-1439 Admin Console is not loaded when Keycloak is installed …
2015-06-11 07:38:29 +01:00
Stian Thorgersen 0e1a059d8d KEYCLOAK-1439 Admin Console is not loaded when Keycloak is installed as root context 2015-06-11 08:15:42 +02:00
Tomas Kyjovsky 30359b51fa Merge upstream-master into tkyjovsk-master 2015-06-10 23:27:36 +02:00
Marek Posolda d8880e5ff3 Merge pull request #1354 from mposolda/master
KEYCLOAK-1260 Fix saml backchannel logout with JPA UserSession provid…
2015-06-10 21:37:05 +02:00
Stian Thorgersen 6819b8e3a5 Merge pull request #1352 from girirajsharma/master
[KEYCLOAK-1431] Update page titles
2015-06-10 18:28:25 +01:00
mposolda 03b521926a KEYCLOAK-1260 Fix saml backchannel logout with JPA UserSession provider on MySQL + PostgreSQL 2015-06-10 18:59:07 +02:00
Scott Rossillo abfec23404 Fix Spring Security adapter logout handling
Stops KeycloakLogoutHandler from throwing an exception if the
authentication is not of type KeycloakAuthenticationToken.

Fixes KEYCLOAK-1438.
2015-06-10 12:22:18 -04:00
Bill Burke 3dd282e11b pluggable required actions backend 2015-06-10 11:38:01 -04:00
girirajsharma 92efe8441e [KEYCLOAK-1431] Update page titles 2015-06-10 20:23:39 +05:30
Bill Burke 95349e6e2e clientsession.action to String 2015-06-10 09:21:23 -04:00
fkiss 15f8e83d4a added initial tests and page for assigning user role mappings 2015-06-10 15:02:25 +02:00
Bill Burke 0095968a73 Merge pull request #1344 from velias/KEYCLOAK-1373
KEYCLOAK-1373 - Allow to map other informations provided by Social Identity providers into Keycloak user profile attributes
2015-06-10 09:02:03 -04:00
Stian Thorgersen ad01d64803 Merge pull request #1351 from girirajsharma/master
[KEYCLOAK-1425] Remove address options on registration screen
2015-06-10 13:32:18 +01:00
girirajsharma 30405804bc [KEYCLOAK-1425] Remove address options on registration screen 2015-06-10 17:42:22 +05:30
Stian Thorgersen 6093d00fdd Merge pull request #1350 from girirajsharma/master
[KEYCLOAK-1424] Login button on login screen should be on the left
2015-06-10 12:14:06 +01:00
girirajsharma 1ba5ea411b [KEYCLOAK-1424] Login button on login screen should be on the left 2015-06-10 16:14:19 +05:30
Tomas Kyjovsky 9dd7a947e9 Merge upstream-master into tkyjovsk-master 2015-06-10 10:40:32 +02:00
Stian Thorgersen c51e6a916c Merge pull request #1346 from mstruk/srv-overlay
Re-enabled server-overlay, and demo-dist for Wildfly 9
2015-06-10 07:30:49 +01:00
Marek Posolda e9b9da6d20 Merge pull request #1349 from mposolda/master
KEYCLOAK-1416 federation provider/mapper model fixes
2015-06-09 23:39:49 +02:00
mposolda 557edbec6d KEYCLOAK-1416 federation provider/mapper model fixes 2015-06-09 23:15:43 +02:00
Marek Posolda 93650c442a Merge pull request #1348 from mposolda/master
KEYCLOAK-1088 Audit of user grants during login
2015-06-09 20:55:26 +02:00
mposolda d3e9b29d78 KEYCLOAK-1088 Audit of user grants during login 2015-06-09 20:37:12 +02:00
Marek Posolda 7cf1b002d2 Merge pull request #1347 from mposolda/master
Fix AdminRecoveryTest + minor fixes in messages
2015-06-09 18:06:59 +02:00
mposolda e96ba202e9 Fix AdminRecoveryTest to not break admin tests 2015-06-09 17:44:07 +02:00
mposolda 9a5ca4d367 Minor improve in error messages and tests 2015-06-09 17:43:20 +02:00
Marko Strukelj e6928c6456 KEYCLOAK-1417 Re-enable demo-dist 2015-06-09 16:35:46 +02:00
Marko Strukelj 245edcb5b9 KEYCLOAK-1418 Re-enable server-overlay
- it's based on server-dist for Wildfly 9 in order to reuse server-feature-pack - no dependency on distribution/modules
2015-06-09 16:35:46 +02:00
Marek Posolda e4cb97aa49 Merge pull request #1345 from mposolda/master
KEYCLOAK-1401 Fix oracle and sybase - step 1
2015-06-09 15:51:51 +02:00
mposolda bc93066fe3 KEYCLOAK-1401 Fix oracle and sybase - step 1 2015-06-09 15:35:03 +02:00
Lukas Kubik bf686bd791 Revert "Add new .gitattributes file"
This reverts commit 01e232158b.
2015-06-09 15:19:36 +02:00
Lukas Kubik 01e232158b Add new .gitattributes file 2015-06-09 15:16:34 +02:00
Vlastimil Elias c6e0195a3c KEYCLOAK-1373 - added attribute importer for other social providers,
documented
2015-06-09 13:49:58 +02:00
Stian Thorgersen 966d939c12 Merge pull request #1340 from mstruk/srv-subsystem
Cleanup, and simplify keycloak-server-subsystem
2015-06-09 07:05:07 +01:00
Stian Thorgersen c61c05be51 Merge pull request #1335 from ssilvert/keycloak-config
KEYCLOAK-1404: Need recovery mechanism for master admin user
2015-06-09 07:02:47 +01:00
Stian Thorgersen 7b099e3d6b Merge pull request #1341 from mstruk/KEYCLOAK-1370
KEYCLOAK-1370 Empty module de.idyl.winzipaes in keycloak-server-dist
2015-06-09 06:45:39 +01:00
Marek Posolda 6d257a0d4c Merge pull request #1343 from mposolda/master
KEYCLOAK-1358 docs for LDAP mappers
2015-06-08 21:11:27 +02:00
mposolda b80a4a0aa9 KEYCLOAK-1358 docs for LDAP mappers 2015-06-08 21:10:38 +02:00
Marek Posolda aabb3428a8 Merge pull request #1342 from mposolda/master
JSON migration, LDAP logging reduced to trace/debug
2015-06-08 20:24:45 +02:00
mposolda 80ff7b92db KEYCLOAK-886 Reduce some LDAP info logging to trace and debug 2015-06-08 19:23:32 +02:00
mposolda 7badd3d5e5 JSON migration 2015-06-08 19:23:32 +02:00
Stan Silvert e977a363ef Require user to specify a temporary admin password to do admin recovery. 2015-06-08 13:04:52 -04:00
Bill Burke 91283878ac html encoding fix 2015-06-08 12:38:16 -04:00
Vlastimil Elias 74ace4006c Added base abstract implementation of Attribute mapper for Social
providers, used for GitHub provider
2015-06-08 17:04:53 +02:00
Marko Strukelj 7be957f4f9 KEYCLOAK-1370 Empty module de.idyl.winzipaes in keycloak-server-dist 2015-06-08 15:59:51 +02:00
Marko Strukelj 3643e76a06 Cleanup, and simplify keycloak-server-subsystem
- KEYCLOAK-1346 Remove support for overlays in server subsystem
 - KEYCLOAK-1347 Remove support for multiple auth-servers
 - KEYCLOAK-1348 Simplify server subsystem definition
2015-06-08 15:33:34 +02:00
Marek Posolda 07bc756785 Merge pull request #1339 from mposolda/master
DB migration
2015-06-08 13:17:15 +02:00
mposolda 0af68d28f1 KEYCLOAK-1357 LDAP migration 2015-06-08 12:29:24 +02:00
mposolda 75e1f50faf KEYCLOAK-1390 mongo migration for identity providers 2015-06-08 12:29:18 +02:00
Bill Burke dcc40b0a63 error handling 2015-06-05 15:51:43 -04:00
Bill Burke dc0d9a8dce merge 2015-06-05 14:44:37 -04:00
Bill Burke 021b01f0bd passing tests 2015-06-05 13:49:24 -04:00
Marek Posolda b578122f19 Merge pull request #1337 from mposolda/ldap
KEYCLOAK-1067 Upgrade embedmongo plugin version. Speed-up mongo tests…
2015-06-05 18:53:36 +02:00
mposolda e014dcce76 KEYCLOAK-1067 Upgrade embedmongo plugin version. Speed-up mongo testsuite 2015-06-05 18:51:27 +02:00
Marek Posolda a1bdf2837e Merge pull request #1336 from mposolda/ldap
Mongo fixes & few other fixes
2015-06-05 18:29:45 +02:00
mposolda 0092d9f74d Mongo fixes & few other fixes 2015-06-05 17:52:56 +02:00
Stan Silvert e48aafd588 Fix spelling error. 2015-06-05 07:46:39 -04:00
Marek Posolda d958d85290 Merge pull request #1334 from mposolda/ldap
KEYCLOAK-1359 more Active Directory fixes
2015-06-05 11:59:08 +02:00
mposolda 5b40031251 KEYCLOAK-1359 more Active Directory fixes 2015-06-05 11:32:29 +02:00
Stian Thorgersen 399a4a0511 Merge pull request #1333 from stianst/master
KEYCLOAK-1407 Label for otp on login is 'Log in'
2015-06-05 08:52:48 +01:00
Stian Thorgersen bebe51c885 KEYCLOAK-1407 Label for otp on login is 'Log in' 2015-06-05 09:37:34 +02:00
Stan Silvert 6812514683 KEYCLOAK-1404: Need recovery mechanism for master admin user 2015-06-04 15:29:44 -04:00
Marek Posolda 62de481329 Merge pull request #1332 from mposolda/ldap
KEYCLOAK-1359 LDAP & Active directory fixes and improvements
2015-06-04 20:47:10 +02:00
mposolda c3eb6df220 KEYCLOAK-1359 LDAP & Active directory fixes and improvements 2015-06-04 20:15:44 +02:00
Stian Thorgersen d875b9885d Merge pull request #1331 from stianst/master
KEYCLOAK-1325 Public/private SPI
2015-06-04 15:26:46 +01:00
Bill Burke 9ab023cc6c more 2015-06-04 10:18:24 -04:00
Stian Thorgersen 3510e17dd3 Merge pull request #1330 from vramik/master
KEYCLOAK-1398 - Change type of 'REPRESENTATION' from BLOB to TEXT in …
2015-06-04 15:02:12 +01:00
Stian Thorgersen f50570e350 KEYCLOAK-1325
Public/private SPI
2015-06-04 15:59:47 +02:00
vramik a52cdae1f7 KEYCLOAK-1398 - Change type of 'REPRESENTATION' from BLOB to TEXT in jpa-changelog-1.3.0.Beta1.xml 2015-06-04 15:43:55 +02:00
Marek Posolda 826c60ae36 Merge pull request #1324 from velias/KEYCLOAK-1371
KEYCLOAK-1371 - Perform "Update Profile on First Login" only if some of mandatory user profile fields is missing from identity provider
2015-06-04 15:19:59 +02:00
Stian Thorgersen d2c9d1569c Merge pull request #1329 from mstruk/modules-cleanup
Clean up distribution/modules and adapter-feature-packs
2015-06-04 13:56:35 +01:00
Stian Thorgersen 15dca61c59 Merge pull request #1318 from cfsnyder/master
KEYCLOAK-681 multi-part emails
2015-06-04 13:55:52 +01:00
Stian Thorgersen 4224496611 Doc update 2015-06-04 14:41:24 +02:00
Stian Thorgersen 7467fbaa12 Merge pull request #1328 from girirajsharma/master
Minor fix: resolved a scope variable in services.js and a typo.
2015-06-04 11:52:17 +01:00
Marko Strukelj 580e4fb0b2 Clean up distribution/modules and adapter-feature-packs 2015-06-04 11:39:08 +02:00
girirajsharma 90b15a070c Minor fix: resolved a scope variable in services.js and a typo. 2015-06-04 14:35:48 +05:30
Bill Burke b54061fc3f more 2015-06-03 18:51:57 -04:00
Marek Posolda ce7de3b576 Merge pull request #1327 from mposolda/ldap
KEYCLOAK-1359 More LDAP fixes
2015-06-03 20:00:58 +02:00
mposolda 31d0365e85 KEYCLOAK-1359 More LDAP fixes 2015-06-03 19:57:11 +02:00
Stian Thorgersen 084da8a03d Merge pull request #1325 from stianst/master
KEYCLOAK-1386 Direct Grant API always on
2015-06-03 18:29:29 +01:00
Marek Posolda e395ecb749 Merge pull request #1326 from mposolda/ldap
KEYCLOAK-1359 Fix testsuite with OpenLDAP, Other LDAP fixes
2015-06-03 18:45:43 +02:00
mposolda a34cb92fc1 KEYCLOAK-1359 Fix testsuite with OpenLDAP, Other LDAP fixes 2015-06-03 18:44:23 +02:00
Bill Burke c12fe28b2d phased auth spi introduction 2015-06-03 10:55:03 -04:00
Cory Snyder 0ac000adca KEYCLOAK-681 multi-part emails 2015-06-03 10:33:18 -04:00
Stian Thorgersen 1dd0b563b6 KEYCLOAK-1386 Direct Grant API always on 2015-06-03 16:24:15 +02:00
Marek Posolda 26acf6fa83 Merge pull request #1323 from mposolda/ldap
Ldap: testsuite upgrade + per-request federation caching
2015-06-03 15:36:29 +02:00
Vlastimil Elias dcc19a39d7 KEYCLOAK-1371 - Perform "Update Profile on First Login" only if some of
mandatory user profile fields is missing from identity provider
2015-06-03 15:24:25 +02:00
mposolda 496062ef0c KEYCLOAK-1359 LDAP tests update 2015-06-03 14:54:14 +02:00
mposolda b27f18c380 KEYCLOAK-838 per-request cache in UserFederationManager 2015-06-03 12:48:19 +02:00
Marek Posolda 442d65bb5f Merge pull request #1322 from mposolda/master
KEYCLOAK-1368 allow forwarding to error page in bearer-only deploymen…
2015-06-03 12:47:04 +02:00
mposolda 35e4a5e56d KEYCLOAK-1368 allow forwarding to error page in bearer-only deployments. Adding DeploymentBuilder 2015-06-03 12:34:56 +02:00
Stian Thorgersen fb60ca115f Merge pull request #1321 from girirajsharma/master
[KEYCLOAK-1356] Order the roles in a alphabetical way
2015-06-03 11:00:57 +01:00
Stian Thorgersen 3d3871b0e6 Merge pull request #1291 from AOEpeople/KEYCLOAK-1305
KEYCLOAK-1305 Add possibility to change username
2015-06-03 10:51:34 +01:00
Stian Thorgersen 060a59f982 Merge pull request #1317 from velias/KEYCLOAK-1372
KEYCLOAK-1372 - do not perform email verification if email is provided by trusted Identity provider
2015-06-03 10:29:52 +01:00
Vlastimil Elias c6c0abbedf KEYCLOAK-1372 - typo patched 2015-06-03 11:00:02 +02:00
Vlastimil Elias df182c3301 KEYCLOAK-1372 - tests updated to test whole user flow including email
verification step
2015-06-03 10:54:33 +02:00
Marek Posolda 56c858d917 Merge pull request #1297 from AOEpeople/KEYCLOAK-1350
KEYCLOAK-1350 client_session_state should be updated when refreshing a token
2015-06-03 09:15:50 +02:00
Stian Thorgersen 00068c460a Merge pull request #1320 from bradthurber/missing-space-in-example-customer-app-string
minor text edit for an error message on customer example
2015-06-03 07:30:54 +01:00
girirajsharma 5d0b6400df [KEYCLOAK-1356] Order the roles in a alphabetical way 2015-06-03 02:02:20 +05:30
Brad Thurber 413295e15e minor text edit 2015-06-02 15:34:50 -04:00
Vlastimil Elias 1c3d165e5d KEYCLOAK-1372 - tests improved 2015-06-02 15:41:50 +02:00
Petr Mensik 5fe0406ec9 Fixed addDisabledUser test 2015-06-02 15:37:19 +02:00
Sebastian Rose 17affe576f KEYCLOAK-1350 client_session_state should be updated when refreshing a token 2015-06-02 15:01:47 +02:00
Vlastimil Elias b86d091ad1 KEYCLOAK-1372 - do not perform email verification if email is provided
by trusted Identity provider
2015-06-02 14:59:29 +02:00
Stian Thorgersen ea544c639e Merge pull request #1316 from girirajsharma/master
[KEYCLOAK-1367] - Enter doesn't work in user search box
2015-06-02 13:35:03 +01:00
Niko Köbler 492e6cd856 KEYCLOAK-1305 Add possibility to change username 2015-06-02 14:08:19 +02:00
Bill Burke 5680be743c Merge pull request #1298 from AOEpeople/KEYCLOAK-1103
KEYCLOAK-1103 proxy configuration for inject header if user is logged in, but do not enforce login
2015-06-02 08:04:05 -04:00
Bill Burke 1fd22ee672 Merge pull request #1288 from dbarentine/master
[KEYCLOAK-1354] Make destination optional
2015-06-02 07:59:50 -04:00
girirajsharma c3faea0428 [KEYCLOAK-1367] - Enter doesn't work in user search box 2015-06-02 17:25:05 +05:30
Stian Thorgersen 483ac69c47 Merge pull request #1315 from velias/KEYCLOAK-1362
KEYCLOAK-1362 - button CSS classes are defined by theme properties now to be customizable
2015-06-02 10:55:18 +01:00
Stian Thorgersen 805ad9f250 Merge pull request #1314 from mstruk/modules-cleanup
KEYCLOAK-1332 Remove adapter modules from server
2015-06-02 10:54:46 +01:00
Vlastimil Elias 43799fd315 KEYCLOAK-1362 - button CSS classes are defined by theme properties 2015-06-02 10:47:13 +02:00
Marko Strukelj 91ec4cb5c7 KEYCLOAK-1332 Remove adapter modules from server 2015-06-02 10:22:26 +02:00
Stian Thorgersen 634ce85f17 Merge pull request #1313 from stianst/master
Changes to Travis around caching
2015-06-02 09:15:44 +01:00
Stian Thorgersen b6c52e8859 Changes to Travis around caching 2015-06-02 09:59:06 +02:00
Stian Thorgersen d042f6e2c9 Merge pull request #1311 from tkyjovsk/master
Removed keycloak-wildfly-adapter-subsystem dependency from keycloak-jboss-modules.
2015-06-02 08:42:36 +01:00
Stian Thorgersen cfe8c2956f Merge pull request #1309 from velias/KEYCLOAK-1369
KEYCLOAK-1369 GUI order attribute of Social providers is reflected in Account management app
2015-06-02 08:41:58 +01:00
Stian Thorgersen 235a8eab02 Merge pull request #1308 from mstruk/srv-subsystem
KEYCLOAK-1304 WF9 server subsystem
2015-06-02 08:41:37 +01:00
Stian Thorgersen 6baefa7490 Merge pull request #1307 from velias/KEYCLOAK-1361
KEYCLOAK-1361 - ability to add custom fields (user.attributes) on login-update-profile.ftl page
2015-06-02 08:40:54 +01:00
Stian Thorgersen 319b29aa7d Merge pull request #1300 from girirajsharma/master
[KEYCLOAK-1200] From and To filter fields in Event viewer in admin app
2015-06-02 08:32:02 +01:00
Stian Thorgersen 02428e4f0f Merge pull request #1306 from vramik/master
KEYCLOAK-1366 - Change type of 'REPRESENTATION' from VARCHAR to BLOB …
2015-06-02 08:30:19 +01:00
Tomas Kyjovsky 3fe93eebb6 Removed keycloak-wildfly-adapter-subsystem dependency from keycloak-jboss-modules. 2015-06-01 19:18:56 +02:00
Marek Posolda f5c7c14ce0 Merge pull request #1310 from mposolda/ldap2
KEYCLOAK-886 LDAP: Fixes and improvements
2015-06-01 18:12:04 +02:00
mposolda f57ab78916 KEYCLOAK-886 LDAP: Fixes and improvements 2015-06-01 17:38:34 +02:00
Vlastimil Elias 087dab6f3d KEYCLOAK-1369 GUI order attribute of Social providers is reflected in
Account management app
2015-06-01 17:01:57 +02:00
Marko Strukelj 3df504b6b4 KEYCLOAK-1304 WF9 server subsystem
- remove unnecessary dependencies
2015-06-01 16:07:59 +02:00
Vlastimil Elias ea98b26766 KEYCLOAK-1361 - ability to add custom fields (user.attributes) on
login-update-profile.ftl page
2015-06-01 15:44:36 +02:00
Stian Thorgersen 6d6e598ce5 Merge pull request #1304 from lkubik/remove-multiple-mysql-versions
Remove duplicit mysql version declaration
2015-06-01 13:35:39 +01:00
Lukas Kubik 67ad7463f4 Remove duplicit mysql version declaration 2015-06-01 14:08:32 +02:00
vramik df6b481112 KEYCLOAK-1366 - Change type of 'REPRESENTATION' from VARCHAR to BLOB in jpa-changelog-1.3.0.Beta1.xml 2015-06-01 11:43:06 +02:00
Marek Posolda 5301b556f0 Merge pull request #1303 from mposolda/ldap2
Update links in kerberos docs and example README
2015-05-29 21:45:32 +02:00
mposolda 2ff7345b08 Update links in kerberos docs and example README 2015-05-29 21:44:28 +02:00
Stian Thorgersen bafcd3f036 Merge pull request #1302 from stianst/master
KEYCLOAK-1327 Updated for users
2015-05-29 15:59:07 +01:00
Stian Thorgersen 5f787028df KEYCLOAK-1327 Updated for users 2015-05-29 15:29:04 +01:00
Stian Thorgersen e1e65af8ea Merge pull request #1301 from mstruk/wf9
KEYCLOAK-1303 WF9 adapter subsystem
2015-05-29 15:23:28 +01:00
girirajsharma 5bb71d396a [KEYCLOAK-1200] From and To filter fields in Event viewer in admin app 2015-05-29 19:13:56 +05:30
Stian Thorgersen 058f44743c Merge pull request #1299 from stianst/master
Misc
2015-05-29 14:22:47 +01:00
Marko Strukelj 2077a2a3af KEYCLOAK-1303 WF9 adapter subsystem
- not dependent on distribution/modules any more
 - keycloak-adapter-subsystem moved to keycloak-wf9-subsystem
 - still installed as <extension module="org.keycloak.keycloak-adapter-subsystem"/>
2015-05-29 15:17:41 +02:00
Stian Thorgersen 5a3a0ae437 KEYCLOAK-1325 Log warning if internal SPI is used 2015-05-29 13:58:40 +01:00
Sebastian Rose b4204fc806 getOrDefault not in java 7 2015-05-29 14:33:52 +02:00
Sebastian Rose e8c90c1327 fixed typo in doc 2015-05-29 14:33:52 +02:00
Sebastian Rose 136f2c8bb7 documentation fixed 2015-05-29 14:33:52 +02:00
Sebastian Rose 2b5e0e238d constants 2015-05-29 14:33:52 +02:00
Sebastian Rose a6eface8bc configurable header names, documentation 2015-05-29 14:33:52 +02:00
Sebastian Rose 7659b1aa18 KEYCLOAK-1103 - First draft 2015-05-29 14:33:52 +02:00
Stian Thorgersen a953b52eac KEYCLOAK-1327 Updated for client stats 2015-05-29 13:15:35 +01:00
Stian Thorgersen 6f164f0ee9 KEYCLOAK-1327 Updated for clients 2015-05-29 13:15:34 +01:00
Stian Thorgersen f61a9d7a70 Merge pull request #1296 from mstruk/as7
KEYCLOAK-1301 AS7 / EAP6 adapter subsystem
2015-05-29 10:13:59 +01:00
Marko Strukelj 4f270bffd0 Refactor EAP 6 adapter distribution
- not dependent on distribution/modules any more
 - uses the same modules as AS7
 - again use <extension module="org.keycloak.keycloak-adapter-subsystem"/>
2015-05-28 23:56:11 +02:00
Marko Strukelj fa90602aa0 Refactor AS 7 adapter distribution
- not dependent on distribution/modules any more
 - again use <extension module="org.keycloak.keycloak-adapter-subsystem"/>
2015-05-28 23:56:11 +02:00
Marek Posolda eaf5034ec7 Merge pull request #1295 from mposolda/ldap2
Ldap fixes + added authType to UI to allow users specify LDAP auth type
2015-05-28 20:44:31 +02:00
mposolda e83de896c9 LDAP fixes + added authType to UI to allow users specify authType 2015-05-28 19:54:15 +02:00
mposolda bcd607a1ee KEYCLOAK-1360 ModelExceptionMapper logges the exception 2015-05-28 19:54:15 +02:00
Bill Burke e1adceeb85 Merge pull request #1294 from patriot1burke/master
javadoc
2015-05-28 09:31:38 -04:00
Bill Burke 106bdc3c52 javadoc 2015-05-28 09:30:57 -04:00
Stian Thorgersen 5229807020 Merge pull request #1293 from girirajsharma/master
[KEYCLOAK-1276] Update Zocial.css
2015-05-28 15:26:13 +02:00
girirajsharma 1e89467b31 [KEYCLOAK-1276] Update Zocial.css 2015-05-28 18:39:51 +05:30
Stian Thorgersen f65b502a96 Merge pull request #1283 from girirajsharma/master
[KEYCLOAK-1200]- From and To filter fields in Event viewer in admin app
2015-05-28 15:03:22 +02:00
girirajsharma efe8342965 [KEYCLOAK-1200]- From and To filter fields in Event viewer in admin app 2015-05-28 18:05:31 +05:30
Marek Posolda 90cb3acd2f Merge pull request #1292 from mposolda/ldap2
Ldap enhancements + Make admin requests to have RealmModel and ClientModel available
2015-05-28 12:40:11 +02:00
mposolda 98dd87efbc Added ProviderConfigProperty.CLIENT_LIST and refactor role federation mapper to use it 2015-05-28 12:28:26 +02:00
mposolda ce6576ce84 KEYCLOAK-1355 Make admin requests to have RealmModel and ClientModel available in KeycloakContext 2015-05-28 12:28:26 +02:00
mposolda 5d4869f915 KEYCLOAK-1300 Fullname test 2015-05-28 12:28:26 +02:00
Stian Thorgersen 92567a070c Merge pull request #1290 from mstruk/wf8
Reintroduce org.keycloak.keycloak-adapter-subsystem module to WF8
2015-05-28 10:08:30 +02:00
Marko Strukelj 30955c4e2c Reintroduce org.keycloak.keycloak-adapter-subsystem module to WF8
- again use <extension module="org.keycloak.keycloak-adapter-subsystem"/>
2015-05-28 09:49:34 +02:00
Stian Thorgersen f9d51db182 Merge pull request #1282 from behana/master
Add send-verify-email endpoint to admin-rest-api
2015-05-28 09:09:06 +02:00
Dane Barentine 852e799fea [KEYCLOAK-1354] Make destination optional and fix details for SAML login events 2015-05-27 15:36:10 -07:00
behana bbc3e99bb5 KEYCLOAK-1353 Option to pass client_id to resetPasswordMail 2015-05-28 00:10:36 +02:00
behana e8e22ee44c KEYCLOAK-1352 Add send-verify-email to admin-rest-api 2015-05-28 00:05:39 +02:00
Bill Burke 7a211beede Merge pull request #1287 from patriot1burke/master
unfinished working auth spi
2015-05-27 14:38:05 -04:00
Bill Burke 24279b138b Merge remote-tracking branch 'upstream/master' 2015-05-27 14:28:57 -04:00
Bill Burke a2718a889d unfinished working auth spi 2015-05-27 14:28:47 -04:00
Bill Burke 756de9f7f6 Merge pull request #1286 from patriot1burke/master
auth spi initialization
2015-05-27 11:27:10 -04:00
Bill Burke 143d176dcd Merge remote-tracking branch 'upstream/master' 2015-05-27 10:39:59 -04:00
Bill Burke a1f7cfaf3a auth spi initialization 2015-05-27 10:39:46 -04:00
Stian Thorgersen a549b3ac70 Merge pull request #1284 from pmensik/integration-arquillian
Prepare UI testing for PR
2015-05-27 10:25:01 +02:00
Marek Posolda 43c9179204 Merge pull request #1285 from mposolda/ldap
KEYCLOAK-886 User Federation Mappers - admin console
2015-05-26 18:28:43 +02:00
mposolda dfe232cf80 KEYCLOAK-886 User Federation Mappers - admin console 2015-05-26 17:48:52 +02:00
Petr Mensik ba88cdce70 Prepare UI testing for PR 2015-05-26 15:57:01 +02:00
Stian Thorgersen 269f9fe860 Merge pull request #1274 from mstruk/wf8
Wildfly 8.2.0.Final compatibility
2015-05-26 09:24:56 +02:00
Stian Thorgersen 4a670ab236 Merge pull request #1276 from mstruk/fix-demos
Fix HttpClient issues in example demos on AS7 / Wildfly
2015-05-26 09:02:06 +02:00
Stian Thorgersen ab934f3d35 Merge pull request #1273 from girirajsharma/master
[KEYCLOAK-1334] Forgot password page does not return validation error
2015-05-26 08:56:04 +02:00
Stian Thorgersen 24eca809f1 Merge pull request #1275 from mstruk/pom-repo-fix
Fix build issue with missing org.jboss.as version 7.5.0.Final-redhat-15
2015-05-26 08:55:34 +02:00
Bill Burke 57780b6520 Merge pull request #1279 from patriot1burke/master
auth spi data model
2015-05-22 17:03:45 -04:00
Bill Burke f5e301fe0d merge 2015-05-22 16:15:55 -04:00
Bill Burke 68976f5b0c auth spi datamodel 2015-05-22 16:03:26 -04:00
girirajsharma 8e7e208265 [KEYCLOAK-1334] Forgot password page does not return validation error
message when input field is empty
2015-05-23 01:18:23 +05:30
mposolda 0951c11aa6 Revert mistakenly edited file 2015-05-22 21:31:03 +02:00
Marek Posolda 3d4ca01242 Merge pull request #1277 from mposolda/ldap
Ldap enhancements - step 1
2015-05-22 21:28:07 +02:00
mposolda 319f86e91a KEYCLOAK-886 Admin console - step 1 2015-05-22 21:09:55 +02:00
mposolda 490b3e3603 KEYCLOAK-886 Added builtin federation mappers when creating new LDAP Federation model. Testsuite passing 2015-05-22 21:09:55 +02:00
mposolda 7476ee51e4 KEYCLOAK-886 Model and representations for UserFederationMappers 2015-05-22 21:09:50 +02:00
mposolda a9f1fda68a KEYCLOAK-630 Added Role Federation mapper. Fixes and refactoring 2015-05-22 21:08:33 +02:00
mposolda 975337f225 KEYCLOAK-1300 Added FullNameLDAPFederationMapper 2015-05-22 21:08:21 +02:00
mposolda 1490f106f2 KEYCLOAK-599 Added UserFederationMappers. Added UserAttributeLDAPFederationMapper 2015-05-22 21:07:32 +02:00
mposolda 61c35265a6 KEYCLOAK-826 Show count of created/updated users during federation sync 2015-05-22 21:06:38 +02:00
mposolda 0f4497e53e Remove user from KC after removing from federation 2015-05-22 21:06:38 +02:00
Marko Strukelj ca60c283fc Fix HttpClient issues in example demos on AS7 / Wildfly
- don't use org.keycloak.adapter.HttpClientBuilder - it's Keycloak internals
 - don't use HttpClient 4.2 or 4.3 APIs (not default in AS7, and Wildfly 8)
    so way we can use the same jboss-deployment-structure.xml
2015-05-22 19:16:34 +02:00
Marko Strukelj 37298bdbd6 Fix build issue with missing org.jboss.as version 7.5.0.Final-redhat-15
- activeByDefault profile is turned off when -P is used
2015-05-22 18:10:40 +02:00
Marko Strukelj d70fd86a82 Wildfly 8.2.0.Final compatibility
- added integration/keycloak/wf8-subsystem
 - added distribution/adapters/wf8-adapter containing wf8-modules, and wf8-adapter-zip
 - there's no dependency on distribution/modules
 - subsystem is installed by unzipping keycloak-wf8-adapter-dist.zip to Wildfly 8.2.0.Final, and adding <extension-module>org.keycloak.keycloak-wf8-subsystem</extension-module> to standalone.xml
2015-05-22 17:38:02 +02:00
Stian Thorgersen ad606cbce6 Merge pull request #1272 from stianst/master
Version bump
2015-05-22 09:05:30 +02:00
Stian Thorgersen 4e0a32a37a Version bump 2015-05-22 09:04:30 +02:00
Stian Thorgersen 7290040008 Merge pull request #1270 from mstruk/as7
AS 7.1.1.Final / EAP 6 compatibility
2015-05-22 09:04:06 +02:00
Marko Strukelj 91bf50eb6c AS 7.1.1.Final / EAP 6.4 compatibility 2015-05-21 11:30:26 +02:00
Stian Thorgersen 748ed30b47 Merge pull request #1268 from stianst/master
Fixes
2015-05-20 07:56:54 +02:00
Stian Thorgersen b88d2f792d NotSerializableException: org.keycloak.models.sessions.infinispan.entities.LoginFailureKey 2015-05-20 07:11:17 +02:00
Stian Thorgersen c8b19fa1ae Updated release instructions 2015-05-20 07:10:53 +02:00
Stian Thorgersen c0795ce2c7 Merge pull request #1267 from stianst/master
Updated admin events
2015-05-19 11:40:42 +02:00
Stian Thorgersen 12c3aa83dd Updated admin events 2015-05-19 11:40:17 +02:00
Stian Thorgersen c193ba0c81 Merge pull request #1261 from panga/master
KEYCLOAK-1306 - Better Admin API error handling (new)
2015-05-19 08:56:19 +02:00
Stian Thorgersen d8226c457f Merge pull request #1266 from stianst/master
Dist fixes
2015-05-19 08:30:44 +02:00
Stian Thorgersen a507771f7c Fix demo dist 2015-05-19 08:15:39 +02:00
Stian Thorgersen 2f8d577e95 Fix server-overlay 2015-05-19 08:15:39 +02:00
Stian Thorgersen 362babe5e2 Fixed server-dist 2015-05-19 08:15:39 +02:00
Bill Burke d9297cee16 Merge pull request #1265 from patriot1burke/master
phase 1 auth/required actions SPI
2015-05-18 16:57:15 -04:00
Bill Burke 3851a2fe72 merge 2015-05-18 16:41:51 -04:00
Bill Burke 338300df32 1st phase auth/required action spi 2015-05-18 16:32:38 -04:00
Stian Thorgersen 0c7f63b2f3 Merge branch 'master' of https://github.com/girirajsharma/keycloak into girirajsharma-master
Conflicts:
	services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
2015-05-18 06:56:12 +02:00
Stian Thorgersen 9a87b7f196 Merge pull request #1263 from panga/fix_response
Fix wrong response code
2015-05-15 09:13:50 +02:00
Leonardo Loch Zanivan abcd830af1 Fix response code 2015-05-13 15:39:51 -03:00
Leonardo Loch Zanivan f807c999b6 Initial messages SPI implementation for Admin REST Services. 2015-05-13 11:13:49 -03:00
girirajsharma ccd5deb85f [KEYCLOAK 392] Audit admin events 2015-05-13 16:47:30 +05:30
Stian Thorgersen dbf9525860 KEYCLOAK-1312 Add clearToken to keycloak.js 2015-05-13 13:13:36 +02:00
Stian Thorgersen 502efe42c9 KEYCLOAK-1288 2015-05-13 11:50:36 +02:00
Stian Thorgersen f0787d98d1 Merge pull request #1259 from stianst/master
Fix welcome-theme in test server
2015-05-13 11:31:19 +02:00
Stian Thorgersen d2ed8302a7 Fix welcome-theme in test server 2015-05-13 11:25:43 +02:00
Stian Thorgersen 15310d1e97 Merge pull request #1257 from stianst/master
KEYCLOAK-1310 Don't log migration model for fresh instal
2015-05-13 11:17:55 +02:00
Stian Thorgersen 38af401a16 KEYCLOAK-1310 Don't log migration model for fresh instal 2015-05-13 11:16:50 +02:00
Stian Thorgersen ab1d39dfb3 Merge pull request #1256 from stianst/master
KEYCLOAK-1277 Fix upgrading from 1.0.x to 1.2.0.Beta1
2015-05-13 10:55:26 +02:00
Stian Thorgersen d35786fe49 KEYCLOAK-1277 Fix upgrading from 1.0.x to 1.2.0.Beta1
Conflicts:
	connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-master.xml
2015-05-13 10:54:48 +02:00
Stian Thorgersen b9db84edf3 Merge pull request #1254 from stianst/master
KEYCLOAK-1307 Fix docs for databaseSchema
2015-05-13 08:11:59 +02:00
Stian Thorgersen c3176cac6a KEYCLOAK-1307 Fix docs for databaseSchema 2015-05-13 08:09:29 +02:00
Stian Thorgersen 6c98d64874 Merge pull request #1238 from raehalme/KEYCLOAK-1294
Added support for GrantedAuthoritiesMapper in KeycloakAuthenticationProvider
2015-05-13 06:57:29 +02:00
Stian Thorgersen 269dc26029 Merge pull request #1250 from ssilvert/patch-1
Fix parent pom.
2015-05-12 14:55:20 +02:00
Stian Thorgersen 48d26fc0e9 Merge pull request #1249 from ssilvert/patch-2
Fix parent pom.
2015-05-12 14:55:11 +02:00
Stan Silvert 797bf49ea6 Update pom.xml 2015-05-12 08:39:57 -04:00
Stan Silvert fd96bacf70 Update pom.xml 2015-05-12 08:38:08 -04:00
Stian Thorgersen 7f9739cd4f Merge pull request #1248 from stianst/master
Added isPrivate to Spi
2015-05-12 08:25:56 +02:00
Stian Thorgersen 698660c92a Added isPrivate to Spi 2015-05-12 08:25:24 +02:00
Stian Thorgersen 5aa90243a0 Merge pull request #1247 from Smartling/KEYCLOAK-1299
Add Servlet 2.x support to the Spring Security adapter
2015-05-12 07:26:50 +02:00
Scott Rossillo 4d32ac8765 Add Servlet 2.x support to the Spring Security adapter
Cookie.setHttpOnly() was added in Servlet 3.0. Make setting a
cookie as HttpOnly dependent on servlet version.
2015-05-11 19:48:16 -04:00
Stian Thorgersen 224f85b981 Merge pull request #1246 from stianst/master
Moved adapter feature pack
2015-05-11 16:27:38 +02:00
Stian Thorgersen 29c72c0744 Moved adapter feature pack 2015-05-11 16:27:16 +02:00
Stian Thorgersen 36c162126b Merge pull request #1245 from stianst/master
Removed unused xslt from server-dist
2015-05-11 16:14:01 +02:00
Stian Thorgersen 252dfe006b Removed unused xslt from server-dist 2015-05-11 16:13:44 +02:00
Stian Thorgersen d1743f0608 Merge pull request #1244 from stianst/master
Build server dist with feature pack
2015-05-11 16:09:42 +02:00
Stian Thorgersen 9168cf811c Build server dist with feature pack 2015-05-11 16:09:16 +02:00
Stian Thorgersen 9e50ae6a01 Merge pull request #1243 from girirajsharma/patch-1
Minor issue: Fixed non-resolvable pom error while updating db schema.
2015-05-11 15:10:38 +02:00
Giriraj Sharma 371c798116 Minor issue: Fixed non-resolvabe pom error while updating schema via hibernate. 2015-05-11 18:38:02 +05:30
Stian Thorgersen d00e0021b6 Merge branch 'master' of https://github.com/girirajsharma/keycloak into girirajsharma-master
Conflicts:
	connections/jpa-liquibase/src/main/resources/META-INF/jpa-changelog-master.xml
	services/src/main/java/org/keycloak/services/resources/admin/IdentityProvidersResource.java
2015-05-11 13:36:30 +02:00
Stian Thorgersen bce3e61b7d Merge pull request #1242 from stianst/master
KEYCLOAK-1289 Support environment variables in keycloak.json
2015-05-11 11:03:50 +02:00
Stian Thorgersen ccbd4bace1 KEYCLOAK-1289 Support environment variables in keycloak.json 2015-05-11 10:17:25 +02:00
Thomas Raehalme 78999537f0 Added support for GrantedAuthoritiesMapper in KeycloakAuthenticationProvider. 2015-05-09 13:42:09 +03:00
Bill Burke e3b0cc7093 Merge pull request #1236 from Smartling/KEYCLOAK-1291
Improve Spring Security adapter default configuration
2015-05-08 20:53:36 -04:00
Bill Burke 50014f4398 Merge pull request #1235 from Smartling/KEYCLOAK-1290
Use backchannel logout for Spring Security SSO
2015-05-08 20:53:26 -04:00
Bill Burke 833c276424 Merge pull request #1234 from mstruk/wfly-subs-split-master
Wildfly 9 - subsystem split + feature packs
2015-05-08 20:53:17 -04:00
Bill Burke 770525a385 Merge pull request #1237 from patriot1burke/master
username mapper
2015-05-08 20:53:05 -04:00
Bill Burke e4204a56f5 username mapper 2015-05-08 20:41:31 -04:00
Scott Rossillo d37a9eada3 Improve Spring Security adapter default configuration 2015-05-08 18:24:49 -04:00
Scott Rossillo a7bfae2f56 Use backchannel logout for Spring Security SSO
Use backchannel logout for Keycloak's Spring Security adapter
single sign-out to allow Spring Security's logout complete handler
to fire.
2015-05-08 18:20:17 -04:00
Stian Thorgersen aaebcd074e Merge pull request #1233 from Smartling/KEYCLOAK-1274
Add Spring Security adapter documentation
2015-05-08 07:10:03 +02:00
Stian Thorgersen 58fc4520c9 Merge pull request #1232 from Smartling/KEYCLOAK-1287
Enable Spring Security adapter to register nodes
2015-05-08 07:09:42 +02:00
Stian Thorgersen 53716697ca Merge pull request #1222 from Smartling/KEYCLOAK-1273
Improve Spring Security adapter client to client authorization
2015-05-08 07:01:14 +02:00
Stian Thorgersen 96668daefa Merge pull request #1231 from Smartling/KEYCLOAK-1286
Permit Spring Security adapter to process admin tasks with CSRF enabled
2015-05-08 07:00:15 +02:00
Scott Rossillo 4b033d3d93 Add Spring Security adapter documentation 2015-05-08 00:23:25 -04:00
Scott Rossillo 8ca9a6a64a Enable Spring Security adapter to register nodes
Enable dynamic application node registration and unregistration
from Spring Security protected applications.
2015-05-07 20:09:16 -04:00
Scott Rossillo 2ce3925ba9 Permit Spring Security adapter to process admin tasks with CSRF enabled
Spring Security's CSRF protection blocks Keycloak administrative
actions when configured with the default request matcher.

This provides a CSRF request matcher that permits Keycloak
administrative actions without the CSRF token.
2015-05-07 19:58:27 -04:00
Marek Posolda 3d9adbe991 Merge pull request #1230 from mposolda/master
KEYCLOAK-1284 Allow users to easily inject or configure MongoClient
2015-05-07 20:56:48 +02:00
mposolda f16828e129 KEYCLOAK-1284 Allow users to easily inject or configure MongoClient for MongoConnectionProvider 2015-05-07 20:40:17 +02:00
mposolda 91eb80beb0 Minor improvements 2015-05-07 20:07:30 +02:00
Marko Strukelj 30682968ff Fix invalid module references that should point to keycloak-wildfly-adapter 2015-05-07 17:21:23 +02:00
Bill Burke 620e3b67e9 Merge pull request #1229 from patriot1burke/master
fix nameid policy
2015-05-07 10:53:34 -04:00
Bill Burke afe1ddd719 Merge remote-tracking branch 'upstream/master' 2015-05-07 10:52:55 -04:00
Bill Burke 0aefacc88e fix name id policy 2015-05-07 10:52:12 -04:00
Stian Thorgersen 366c707afa Merge pull request #1227 from stianst/master
KEYCLOAK-1282
2015-05-07 09:39:54 +02:00
Stian Thorgersen 707e29adef KEYCLOAK-1282 2015-05-07 09:39:28 +02:00
Stian Thorgersen 66f2735224 Merge pull request #1225 from stianst/master
KEYCLOAK-1279
2015-05-07 06:46:25 +02:00
Stian Thorgersen 86e19c274f KEYCLOAK-1279 2015-05-07 06:46:12 +02:00
Stian Thorgersen 46bb59e348 Merge pull request #1224 from stianst/master
Fix doc for installing onto EAP
2015-05-07 06:29:53 +02:00
Stian Thorgersen 37cbba57e6 Fix doc for installing onto EAP 2015-05-07 06:27:32 +02:00
Scott Rossillo b05da425b9 Improve Spring Security adapter client to client authorization 2015-05-06 16:54:55 -04:00
Marko Strukelj c28f5cef7a Fix WildFly org.apache.httpcomponents issue 2015-05-06 18:57:40 +02:00
Marko Strukelj f65e804836 WildFly testsuite work 2015-05-06 16:51:49 +02:00
Marko Strukelj 01e9b3bcff Upgrade version on overlooked poms to 1.3.0.Beta1-SNAPSHOT 2015-05-05 21:30:42 +02:00
Marko Strukelj 4e58bed39e Move keycloak modules under integration/keycloak 2015-05-05 20:48:13 +02:00
Marko Strukelj 7d2942e1be KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems
- Rename keycloak-server-subsystem dir to wildfly-server-subsystem
 - Rename keycloak-agent-subsystem dir to keycloak-wildfly-agent-subsystem
 - Rename artifacts accordingly (keycloak- prefix)
 Only maven artifacts are renamed, jboss-modules modules are still called keycloak-server-subsystem, and keycloak-agent-subsystem
2015-05-05 20:43:23 +02:00
Marko Strukelj 943404689e KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems
- Use WildFly 9.0.0.CR1
2015-05-05 20:40:05 +02:00
Marko Strukelj 89875aea02 KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems
- Fix deprecated uses, and more code cleanup
2015-05-05 20:40:05 +02:00
Marko Strukelj 70ce96caa0 KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems
- Fix overlooked file renames causing subsystem tests to fail
2015-05-05 20:40:05 +02:00
Marko Strukelj 625fb02dfe Fix typo preventing adapter-only-dist feature pack to build 2015-05-05 20:40:04 +02:00
Stan Silvert 18966334ab Update README.md 2015-05-05 20:40:04 +02:00
Stan Silvert a8f3756bbc Rename feature pack artifacts. Fix empty content directory. 2015-05-05 20:40:04 +02:00
Stan Silvert f0dab97b80 Add README file. 2015-05-05 20:40:04 +02:00
Stan Silvert 3a7bba041f Create builds based on WildFly 9 feature packs. 2015-05-05 20:40:04 +02:00
Marko Strukelj a50c0e61e4 Fix missing wildfly-undertow version 2015-05-05 20:40:04 +02:00
Marko Strukelj 87cb28eaab KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems
- Fix server-subsystem tests
2015-05-05 20:40:04 +02:00
Marko Strukelj 03fa58a271 KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems
- POM dependencies cleanup
2015-05-05 20:40:03 +02:00
Marko Strukelj 666e610334 Upgrade WildFly to 9.0.0.RC1-SNAPSHOT 2015-05-05 20:40:03 +02:00
Marko Strukelj 3c76a85674 KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems
- More code and pom cleanup
2015-05-05 20:40:03 +02:00
Marko Strukelj c571ad9902 KEYCLOAK-1183 Split subsystem into separate server and adapter subsystems
- Renamed keycloak-subsystem into keycloak-server-subsystem
 - Added keycloak-adapter-subsystem without auth-server support
 - Removed adapter config from keycloak-server subsystem
 - Added proper .xsd for server subsystem
2015-05-05 20:40:03 +02:00
Tomaz Cerar 355c440c3d Update subsystem code to reflect latest standards 2015-05-05 20:38:52 +02:00
Tomaz Cerar 9a17658f84 remove eap6 dup 2015-05-05 20:38:52 +02:00
Bill Burke 69347aa7f6 Merge pull request #1220 from panga/master
KEYCLOAK-1269 and KEYCLOAK-1270
2015-05-05 14:31:48 -04:00
Bill Burke bf259f4c98 Merge pull request #1221 from patriot1burke/master
no backchannel if state
2015-05-05 14:18:52 -04:00
Bill Burke 082ebe8043 no backchannel if state 2015-05-05 13:58:07 -04:00
Leonardo Zanivan a13a02c995 KEYCLOAK-1270 fix 2015-05-05 11:17:27 -03:00
Leonardo Zanivan 3a9ac80786 Merge branch 'master' of github.com:panga/keycloak 2015-05-05 10:30:32 -03:00
Leonardo Zanivan d3cf177ebc Fix user.emailVerified on realm import 2015-05-05 10:29:44 -03:00
Leonardo Zanivan 7b49dbb74e Merge pull request #1 from keycloak/master
Merge
2015-05-05 10:27:59 -03:00
Stian Thorgersen 4cc249bcd4 Merge pull request #1219 from stianst/master
Fixes
2015-05-05 11:56:19 +02:00
Stian Thorgersen 035529d7a2 Version bump 2015-05-05 11:45:21 +02:00
Stian Thorgersen fa91c0ed03 Added missing dependencies to testsuite/docker-cluster£ 2015-05-05 10:40:47 +02:00
Stian Thorgersen adbde56c1a Removed tar.gz dist of docs 2015-05-05 10:28:04 +02:00
Stian Thorgersen a917939441 Don't deploy saml examples to maven 2015-05-05 09:33:48 +02:00
Stian Thorgersen f793e883ef Don't deploy saml examples to maven 2015-05-05 08:46:51 +02:00
Stian Thorgersen d2780c0b2e Fix broker examples poms 2015-05-05 07:55:22 +02:00
Stian Thorgersen 896e309866 Fix version setting 2015-05-05 07:31:07 +02:00
Stian Thorgersen a6dbfc7861 Fix version setting 2015-05-05 07:29:14 +02:00
Stian Thorgersen 070ed88337 Fix version setting 2015-05-05 07:24:40 +02:00
Stian Thorgersen bd52908df4 Fix version setting 2015-05-05 07:22:50 +02:00
Stian Thorgersen 5399c20a8c KEYCLOAK-1259 2015-05-05 07:02:00 +02:00
Stian Thorgersen 4a82ed73a4 KEYCLOAK-1252 2015-05-05 07:00:15 +02:00
Stian Thorgersen f388c3d385 KEYCLOAK-1253 2015-05-05 06:49:54 +02:00
Stian Thorgersen 2de0748e95 KEYCLOAK-1255 2015-05-05 06:48:01 +02:00
Stian Thorgersen 997ede06fb KEYCLOAK-1256 2015-05-05 06:39:58 +02:00
Stian Thorgersen 68be5dd12a KEYCLOAK-1257 2015-05-05 06:33:49 +02:00
Stian Thorgersen ad751e419c Merge pull request #1218 from stianst/master
KEYCLOAK-1263
2015-05-05 06:20:30 +02:00
Stian Thorgersen c862479dcd KEYCLOAK-1263 2015-05-05 06:20:09 +02:00
Stian Thorgersen 5cb11b9036 Merge pull request #1217 from stianst/master
KEYCLOAK-1254
2015-05-05 06:16:12 +02:00
Stian Thorgersen f63d52af04 KEYCLOAK-1254 2015-05-05 06:15:46 +02:00
Stian Thorgersen 3c0959640b Merge pull request #1215 from stianst/master
Fixes to brokering
2015-05-05 06:06:22 +02:00
Marek Posolda dea4f4b931 Merge pull request #1216 from mposolda/master
KEYCLOAK-1265 Fix import realm in admin console on EAP 6.4, Update docke...
2015-05-04 23:34:34 +02:00
mposolda 3d26ab8817 KEYCLOAK-1265 Fix import realm in admin console on EAP 6.4, Update docker-cluster 2015-05-04 23:20:13 +02:00
Stian Thorgersen 3f3b21a75e Fix login with Twitter 2015-05-04 21:23:07 +02:00
Stian Thorgersen b0002d6a09 Fix broker examples 2015-05-04 21:09:01 +02:00
Stian Thorgersen c1708ea7d5 Merge pull request #1214 from stianst/master
Fixes
2015-05-04 20:56:17 +02:00
Stian Thorgersen 937ab313e5 Added distribution changes to migration docs 2015-05-04 20:29:30 +02:00
Stian Thorgersen 523f746745 Added providers classpath for standalone/configuration/providers 2015-05-04 20:13:08 +02:00
Stian Thorgersen f5f5d934c8 Fix saml examples 2015-05-04 19:50:05 +02:00
Stian Thorgersen d67804cd0b Renamed change logs to CR1 2015-05-04 19:35:16 +02:00
Stian Thorgersen dcbdb59e00 Updated instructions to deploy cors to use wildfly 2015-05-04 19:35:16 +02:00
Stian Thorgersen 92db89f9e8 Merge pull request #1213 from stianst/master
Updated instructions on deploying example themes
2015-05-04 15:26:50 +02:00
Stian Thorgersen aafc46657a Updated instructions on deploying example themes 2015-05-04 15:26:33 +02:00
Marek Posolda 667e014971 Merge pull request #1212 from mposolda/master
Workaround to have SAMLKeyCloakServerBrokerWithSignatureTest.testAccountManagementLinkIdentity passing with JPA profile
2015-05-04 14:54:18 +02:00
mposolda ed525f8ed9 Workaround to have SAMLKeyCloakServerBrokerWithSignatureTest.testAccountManagementLinkIdentity passing with JPA profile 2015-05-04 14:42:25 +02:00
mposolda e03140a9f2 Fix redirect after unlink federated identity and logout from account management 2015-05-04 14:42:25 +02:00
Stian Thorgersen 6377cb71f7 Merge pull request #1211 from stianst/master
Updated example themes
2015-05-04 12:49:35 +02:00
Stian Thorgersen a3c40f311c Updated example themes 2015-05-04 12:49:18 +02:00
Stian Thorgersen c736fab75e Merge pull request #1210 from stianst/master
Fixes
2015-05-04 11:55:32 +02:00
Stian Thorgersen df442a6ab8 Fix admin-client example 2015-05-04 11:55:09 +02:00
Stian Thorgersen d355d53262 Don't deploy demo bundle and subsystem war to Maven repo 2015-05-04 11:40:06 +02:00
Stian Thorgersen a7bebadf20 Merge pull request #1209 from stianst/master
Fixes to AS7 adapter
2015-05-04 11:35:57 +02:00
Stian Thorgersen 59d7ff3f0a Fixes to AS7 adapter 2015-05-04 11:35:37 +02:00
Stian Thorgersen 7f02ac84ad Merge pull request #1208 from jean-merelis/translate-pt-br
aligning translation pt-br with master
2015-05-04 07:50:57 +02:00
girirajsharma 70f53c6c06 [KEYCLOAK-392] - Admin audit events 2015-05-03 01:46:52 +05:30
jean b3723cf323 aligning translation pt-br with master 2015-05-01 16:14:21 -03:00
Bill Burke edfe7bd285 Merge pull request #1207 from patriot1burke/master
bump default key sizes
2015-05-01 10:59:20 -04:00
Bill Burke 311fca5a72 exception handling fix 2015-05-01 10:31:03 -04:00
Bill Burke 98d82d2cae stupid 2015-05-01 10:13:57 -04:00
Bill Burke 9372d23ad9 bump default keysize to 2048 2015-05-01 10:11:49 -04:00
Stian Thorgersen de2ce8a04e Merge pull request #1206 from stianst/master
Add Xdoclint option to JavaDoc only if JDK > 1.8
2015-04-30 15:22:19 +02:00
Stian Thorgersen 7eafb14622 Add Xdoclint option to JavaDoc only if JDK > 1.8 2015-04-30 15:05:17 +02:00
Stian Thorgersen fd91d46b5b Merge pull request #1205 from stianst/master
KEYCLOAK-1248 Fix direct grants only switch
2015-04-30 14:41:55 +02:00
Stian Thorgersen 3768c1f1ad KEYCLOAK-1243
Federated Identities table is empty for user synced from classpath properties provider
2015-04-30 14:31:20 +02:00
Stian Thorgersen dcbf91eff0 Fix to social provider buttons 2015-04-30 14:16:25 +02:00
Stian Thorgersen 66242b4176 KEYCLOAK-1244 Save button on user federation redirects to user federation list 2015-04-30 14:00:44 +02:00
Stian Thorgersen 39627f0661 KEYCLOAK-1248 Fix direct grants only switch 2015-04-30 13:44:46 +02:00
Stian Thorgersen 71f2bf77f8 Merge pull request #1204 from stianst/master
Add -Xdoclint:none to make javadoc work on jdk8
2015-04-30 13:31:24 +02:00
Marek Posolda 99c79f9fd7 Merge pull request #1203 from mposolda/master
Minor fix in example
2015-04-30 13:31:10 +02:00
mposolda c942f44437 Minor fix in example 2015-04-30 13:30:05 +02:00
Marek Posolda efaca72631 Merge pull request #1202 from mposolda/master
Docs fix for Application and OAuth client merge. Migration. Docs fix for...
2015-04-30 13:18:09 +02:00
mposolda 6fb98c547a Docs fix for Application and OAuth client merge. Migration. Docs fix for direct access grants 2015-04-30 13:14:38 +02:00
Stian Thorgersen 25bddb8ee7 Add -Xdoclint:none to make javadoc work on jdk8 2015-04-30 13:01:19 +02:00
Stian Thorgersen f1bff01999 Merge pull request #1201 from stianst/master
Misc
2015-04-30 12:52:46 +02:00
Stian Thorgersen 74e5c62069 Updated server installation docs 2015-04-30 12:33:27 +02:00
Marek Posolda e52e13d611 Merge pull request #1200 from mposolda/master
Fix tooltips on FF
2015-04-30 11:33:58 +02:00
mposolda 8f6e7d275e Fix tooltips on FF 2015-04-30 11:32:16 +02:00
Stian Thorgersen ad42b4dde3 Updated demo-dist 2015-04-30 09:40:24 +02:00
Stian Thorgersen 973fa0d4ec Replace Keycloak account theme with PatternFly account theme 2015-04-30 08:24:01 +02:00
Stian Thorgersen 640e6efefd Rename Cache Config tab to Cache 2015-04-30 08:20:27 +02:00
Stian Thorgersen e026c8b206 Fix dark font on login page 2015-04-30 08:16:34 +02:00
Bill Burke 761be66362 Merge pull request #1199 from patriot1burke/master
apache http client fixes
2015-04-29 21:59:50 -04:00
Bill Burke e54bf4a16f hc config and docs 2015-04-29 21:42:32 -04:00
Bill Burke 35c33f132e demo fix and error message fix 2015-04-29 21:16:59 -04:00
Bill Burke 666827b7cb remove resteasy ClientRequest 2015-04-29 20:46:14 -04:00
Bill Burke 10998eb35b Merge pull request #1193 from behana/master
Let admin-client acquire new token if refresh_token is stale
2015-04-29 16:33:20 -04:00
Bill Burke 10d02e7442 Merge pull request #1198 from patriot1burke/master
fix acct theme, broker examples
2015-04-29 15:53:23 -04:00
Bill Burke 8d493381a9 fix account theme 2015-04-29 15:52:15 -04:00
Bill Burke d353add130 Merge remote-tracking branch 'upstream/master' 2015-04-29 14:40:04 -04:00
Bill Burke 77d17001bf broker examples 2015-04-29 14:39:41 -04:00
Stian Thorgersen df317b8368 Merge pull request #1197 from stianst/master
Removed PatternFly themes
2015-04-29 19:51:27 +02:00
Stian Thorgersen ee358ccbc4 Removed PatternFly themes 2015-04-29 19:47:56 +02:00
Stian Thorgersen 4450416905 Merge pull request #1196 from stianst/master
KEYCLOAK-887 Updated admin console theme
2015-04-29 19:34:58 +02:00
Stian Thorgersen 0b821a71e3 KEYCLOAK-887 Updated admin console theme 2015-04-29 19:34:08 +02:00
Bill Burke fd620ef505 Merge pull request #1194 from patriot1burke/master
READ_TOKEN -> read-token
2015-04-29 10:21:48 -04:00
Marek Posolda e05f60b66e Merge pull request #1195 from mposolda/master
When revoke consent from admin console, logout clientSessions similarly ...
2015-04-29 16:21:38 +02:00
Bill Burke 947a2f0c20 READ_TOKEN -> read-token 2015-04-29 09:47:56 -04:00
mposolda 063cefa18c When revoke consent from admin console, logout clientSessions similarly like done in Account mgmt 2015-04-29 15:35:33 +02:00
behana 8dfc7d9e8d Let admin-client acquire new token if refresh_token is stale 2015-04-29 05:01:59 +02:00
Bill Burke d632d22d2a Merge pull request #1188 from shivasaxena/patch-1
corrected URL of XML entity descriptor for the IDP
2015-04-28 21:49:55 -04:00
Bill Burke 4a89fe93b5 Merge pull request #1191 from Smartling/KEYCLOAK-1238
Add Spring Security adapter
2015-04-28 21:49:33 -04:00
Bill Burke 08e1f455e2 Merge pull request #1192 from patriot1burke/master
broker backchannel logout
2015-04-28 19:18:45 -04:00
Bill Burke e65c0d9893 broker backchannel logout console 2015-04-28 19:02:37 -04:00
Bill Burke be656b2dba Merge remote-tracking branch 'upstream/master' 2015-04-28 18:52:42 -04:00
Bill Burke bfcf595346 backchannel broker logout 2015-04-28 18:52:30 -04:00
Scott Rossillo 06a7938aa6 Add Spring Security adapter 2015-04-28 15:05:56 -04:00
Marek Posolda e51cb4df60 Merge pull request #1190 from mposolda/master
KEYCLOAK-1240 Fix stale cache issue
2015-04-28 20:44:26 +02:00
mposolda 553f8a6f27 KEYCLOAK-1240 Fix stale cache issue 2015-04-28 20:20:50 +02:00
Marek Posolda 4d288f1ffc Merge pull request #1189 from mposolda/master
Fix JPA migration of OAuth clients
2015-04-28 18:20:13 +02:00
mposolda 3e5854c651 Fix JPA migration of OAuth clients 2015-04-28 17:44:06 +02:00
Marek Posolda 53fc940952 Merge pull request #1187 from mposolda/master
Fix MySQL
2015-04-28 12:45:33 +02:00
Shiva Saxena c95e21a49a corrected URL of XML entity descriptor for the IDP 2015-04-28 16:09:16 +05:30
mposolda 692898501e Fix MySQL 2015-04-28 12:34:22 +02:00
Marek Posolda 1fbbdb5f4a Merge pull request #1186 from mposolda/master
Fix mongo migration
2015-04-28 11:12:13 +02:00
mposolda d4c69e98ce Fix mongo migration 2015-04-28 11:10:48 +02:00
Marek Posolda 8224f3ba48 Merge pull request #1185 from mposolda/master
KEYCLOAK-1070 and other fixes
2015-04-28 10:16:56 +02:00
mposolda 5e0f560fdc KEYCLOAK-1070 Migration for adding names to builtin clients 2015-04-28 09:35:57 +02:00
mposolda 1d4bf4ddaa UserSessionNote mapper have combobox for claim type in admin console 2015-04-28 07:56:45 +02:00
mposolda 775d1f096c Fix mongo model 2015-04-28 07:56:45 +02:00
mposolda 316053018b KEYCLOAK-1070 Support for view and revoke consents in admin console 2015-04-28 07:56:45 +02:00
mposolda 1d4ef83b81 Show how to retrieve user details in REST endpoint 2015-04-28 07:56:45 +02:00
mposolda 074b6d261a Test how to retrieve underlying error message from the admin-client 2015-04-28 07:56:45 +02:00
Bill Burke bbe2532acb Merge pull request #1184 from patriot1burke/master
model migration
2015-04-27 16:41:54 -04:00
Bill Burke 4166393396 model migration 2015-04-27 16:12:43 -04:00
Stian Thorgersen 9ce452443d Merge pull request #1183 from stianst/master
KEYCLOAK-1189 Add apache httpclient module with slot 4.3
2015-04-27 19:14:44 +02:00
Stian Thorgersen 215a3497ae KEYCLOAK-1189 Add apache httpclient module with slot 4.3 2015-04-27 16:33:48 +02:00
Bill Burke f17863041a Merge pull request #1182 from patriot1burke/master
more broker mappers
2015-04-26 11:20:15 -04:00
Bill Burke 40510683a1 fix tomcat version 2015-04-26 11:10:49 -04:00
Bill Burke 2b1ec74fba docs for broker 2015-04-26 11:04:13 -04:00
Bill Burke 206b44d9c2 Merge remote-tracking branch 'upstream/master' 2015-04-26 10:32:04 -04:00
Bill Burke 44787d83d2 more broker mappers 2015-04-26 10:31:53 -04:00
Bill Burke 23a3aa023c Merge pull request #1181 from patriot1burke/master
filter oidc broker import keys
2015-04-24 19:37:25 -04:00
Bill Burke 9151d2aebd Merge remote-tracking branch 'upstream/master' 2015-04-24 18:37:18 -04:00
Bill Burke 5e1ac684a5 broker logout fixes 2015-04-24 16:32:32 -04:00
Bill Burke 5fca18b3c0 filter oidc broker import keys 2015-04-24 15:03:35 -04:00
Bill Burke 7395d6585c filter oidc broker import keys 2015-04-24 15:03:20 -04:00
Marek Posolda 05d0f1d2ee Merge pull request #1180 from mposolda/master
KEYCLOAK-1216
2015-04-24 19:19:02 +02:00
mposolda a338626d2b KEYCLOAK-1216 Click on 'Logout all sessions' in Account mgmt should propagate logout to the apps 2015-04-24 18:42:18 +02:00
mposolda 767d1fcc20 Don't use JPA eventsStore in mongo tests 2015-04-24 18:42:17 +02:00
Marek Posolda b8d23829aa Merge pull request #1179 from mposolda/master
KEYCLOAK-1070 Improve Applications page and add available roles. Add tes...
2015-04-24 17:15:21 +02:00
mposolda ce747ad039 Change title of Applications page 2015-04-24 16:49:12 +02:00
mposolda 3a4670e8ff KEYCLOAK-1070 Improve Applications page and add available roles. Add tests 2015-04-24 16:40:52 +02:00
Stian Thorgersen 68c3652078 Merge pull request #1178 from stianst/master
More dist updates
2015-04-24 09:24:10 +02:00
Stian Thorgersen 1f49ae8a2f Updated xslts 2015-04-24 09:19:40 +02:00
Stian Thorgersen ac49ba2f44 More tweaks to dist 2015-04-24 07:30:59 +02:00
Stian Thorgersen f0d3fa783a Moved docs into separate dist to reduce size of server-overlay 2015-04-24 07:15:11 +02:00
Bill Burke d007ee3630 Merge pull request #1177 from patriot1burke/master
broker token role
2015-04-23 16:46:22 -04:00
Bill Burke 84fd38316c stupid 2015-04-23 16:34:42 -04:00
Bill Burke 104a9f9842 Merge remote-tracking branch 'upstream/master' 2015-04-23 16:31:09 -04:00
Bill Burke d49e0eda9e broker token role 2015-04-23 15:26:07 -04:00
Marek Posolda 76f406e993 Merge pull request #1176 from mposolda/master
KEYCLOAK-1070 persistent grants - another step
2015-04-23 19:01:37 +02:00
mposolda d1e6b7523e Fix mongo 2015-04-23 18:32:18 +02:00
mposolda 14b3d085a0 KEYCLOAK-1070 Rename 'Access' to 'Applications' 2015-04-23 18:21:21 +02:00
mposolda c942a8ac4f KEYCLOAK-1070 ClientModel.setName/getName 2015-04-23 18:21:21 +02:00
mposolda 535023d800 KEYCLOAK-1070 add setProtocolMappers/getProtocolMappers to ClientSession 2015-04-23 18:20:34 +02:00
Bill Burke dae219d32e Merge pull request #1175 from patriot1burke/master
broker token exchange refactor
2015-04-23 12:08:12 -04:00
Bill Burke a7d245b1fb finish 2015-04-23 11:40:29 -04:00
Bill Burke 1f4df58e6c broker token exchange refactor 2015-04-23 11:26:44 -04:00
Stian Thorgersen d314198e40 Merge pull request #1174 from stianst/master
Build javadoc as part of release process
2015-04-23 16:09:59 +02:00
Stian Thorgersen 35b6c88500 Don't replace welcome-content in server-overlay 2015-04-23 15:53:04 +02:00
Stian Thorgersen f74e1463df Updated docs for server dist changes 2015-04-23 15:53:04 +02:00
Stian Thorgersen 37243d058c Fixes 2015-04-23 15:53:03 +02:00
Stian Thorgersen 927032997e Updated release instructions 2015-04-23 15:53:03 +02:00
Stian Thorgersen e64a2d8de5 Fixes 2015-04-23 15:53:03 +02:00
Stian Thorgersen e697d5ebf5 Merge pull request #1173 from stianst/master
Updates to deps
2015-04-23 13:24:13 +02:00
Stian Thorgersen 9d5cd2091e Updates to deps 2015-04-23 13:23:22 +02:00
Stian Thorgersen 870f29d797 Merge pull request #1172 from stianst/master
Dist work
2015-04-23 12:40:38 +02:00
Stian Thorgersen f037aaa1af Removed project-integrations as it's moved to a separate repo 2015-04-23 11:19:20 +02:00
Stian Thorgersen e17105cc8e Updated distribution and cleaning of maven modules 2015-04-23 11:15:05 +02:00
Stian Thorgersen cf75a97f08 Merge pull request #1169 from gkfirst8/KEYCLOAK-1220
log the right value when keycloak.config.file could not be found or read
2015-04-22 14:08:29 +02:00
Marek Posolda 8e0252ecb1 Merge pull request #1171 from mposolda/master
KEYCLOAK-1070
2015-04-22 12:09:51 +02:00
mposolda 34e033e351 KEYCLOAK-1070 JSON representation and export/import for userConsent 2015-04-22 11:29:43 +02:00
mposolda 11035dbe1b KEYCLOAK-1070 Rename GrantedConsentModel to UserConsentModel. Mongo support for consents. Mongo fixes 2015-04-22 11:29:36 +02:00
gkfirst8 0b782e9910 Fix logging call 2015-04-22 10:54:43 +02:00
Stian Thorgersen 136fd37b1b Merge pull request #1170 from stianst/master
KEYCLOAK-1218 Better security for ServerInfoAdminResource
2015-04-22 09:43:11 +02:00
Stian Thorgersen b5f3efe272 KEYCLOAK-1218 Better security for ServerInfoAdminResource 2015-04-22 08:59:00 +02:00
Marek Posolda 955967f78a Merge pull request #1167 from panga/master
KEYCLOAK-1222 - BasicAuth KeycloakSecurityContext token issue
2015-04-22 08:39:44 +02:00
Leonardo Loch Zanivan 642fc996fb Basic Auth token fix 2015-04-21 16:22:14 -03:00
Leonardo Loch Zanivan 6ce0285315 Basic Auth token fix 2015-04-21 12:32:17 -03:00
gkfirst8 aef61411e9 log the right value when keycloak.config.file could not be found or read
Fix for [KEYCLOAK-1220]
2015-04-21 11:46:33 +02:00
Stian Thorgersen 83a409bbf6 Merge pull request #1165 from stianst/master
KEYCLOAK-1208 Allow same-origin if cors is enabled
2015-04-21 10:57:47 +02:00
Stian Thorgersen 5ed864fbbc KEYCLOAK-1208 Allow same-origin if cors is enabled 2015-04-21 10:42:13 +02:00
Bill Burke 416e71fa97 Merge pull request #1164 from patriot1burke/master
broker mapper tests
2015-04-20 18:35:15 -04:00
Bill Burke f9b099d49d Merge remote-tracking branch 'upstream/master' 2015-04-20 18:20:04 -04:00
Bill Burke 193aa23581 broker mapper tests 2015-04-20 18:04:30 -04:00
Bill Burke 3a4750c6de Merge pull request #1163 from patriot1burke/master
broker user attribute mapper
2015-04-20 15:01:02 -04:00
Bill Burke 63201c10f5 turn off ide test 2015-04-20 14:36:24 -04:00
Bill Burke 65f058a088 Merge remote-tracking branch 'upstream/master' 2015-04-20 14:33:44 -04:00
Bill Burke c95c9fa022 broker user attribute mapper 2015-04-20 14:33:31 -04:00
Bill Burke af736a29f1 Merge pull request #1144 from TFaga/master
[KEYCLOAK-1211] Fixed AD users authenticating without providing a password
2015-04-20 12:31:58 -04:00
Bill Burke 22f26a6221 Merge pull request #1162 from patriot1burke/master
saml broker role mapper
2015-04-20 12:31:31 -04:00
Bill Burke d30b81144e ignore test 2015-04-20 12:00:22 -04:00
Bill Burke e32ef66e2a Merge remote-tracking branch 'upstream/master' 2015-04-20 11:55:01 -04:00
Bill Burke 3ceb818ee5 saml broker role mapper 2015-04-20 11:54:39 -04:00
Stian Thorgersen 6b1e4b2ab3 Merge pull request #1161 from stianst/master
KEYCLOAK-1210 Link to Google Authenticator is broken
2015-04-20 09:59:34 +02:00
Stian Thorgersen 3a4141f5b5 KEYCLOAK-1210 Link to Google Authenticator is broken 2015-04-20 09:44:26 +02:00
Stian Thorgersen 5ea6169214 Merge pull request #1157 from girirajsharma/master
Minor issue: Fixed wildfly ide-configs link parsing.
2015-04-20 07:11:22 +02:00
Bill Burke 46c63d9169 Merge pull request #1160 from patriot1burke/master
oidc broker role mapper
2015-04-17 18:36:57 -04:00
Bill Burke db1d6e79d9 more surefire mem needed 2015-04-17 17:44:10 -04:00
Bill Burke 8eb2f35423 Merge remote-tracking branch 'upstream/master' 2015-04-17 16:41:16 -04:00
Bill Burke a7c563b0eb oidc broker role mapper 2015-04-17 16:41:04 -04:00
Marek Posolda 6a6ddc8a0c Merge pull request #1159 from mposolda/master
Improve kerberos documentation a bit
2015-04-17 18:44:07 +02:00
mposolda 6965364813 Improve kerberos documentation a bit 2015-04-17 18:43:04 +02:00
Marek Posolda 9937be1cdf Merge pull request #1158 from mposolda/master
KEYCLOAK-1070 Persistent grants - step 1
2015-04-17 17:11:53 +02:00
mposolda 78830836b8 KEYCLOAK-1070 Persistent grants - step 1 2015-04-17 14:03:23 +02:00
Stian Thorgersen aea5055b30 Merge branch 'fiorenzino-KEYCLOAK-1215' 2015-04-17 13:06:19 +02:00
Giriraj Sharma a75d608f87 Minor issue: Fixed wildfly ide-configs link parsing. 2015-04-17 16:36:17 +05:30
Stian Thorgersen d52a365766 Add it to admin console language options and fix test 2015-04-17 13:06:07 +02:00
Stian Thorgersen c071601660 Merge branch 'KEYCLOAK-1215' of https://github.com/fiorenzino/keycloak into fiorenzino-KEYCLOAK-1215 2015-04-17 12:58:22 +02:00
Stian Thorgersen fad0e80bcf Merge pull request #1155 from girirajsharma/master
[KEYCLOAK-402] - Force password changes at regular intervals
2015-04-17 12:55:45 +02:00
girirajsharma f959332117 [KEYCLOAK-402] - Force password changes at regular intervals 2015-04-16 23:41:45 +05:30
fiorenzo pizza fb7ca4928d some single quote 2015-04-16 17:17:34 +02:00
fiorenzo pizza f5bc936e0d admin messages 2015-04-16 17:14:37 +02:00
fiorenzo pizza 1ef5bf2abf it translation 2015-04-16 16:27:02 +02:00
Marek Posolda 14b2401aa8 Merge pull request #1154 from fiorenzino/KEYCLOAK-1214
support Novell eDirectory in federation module
2015-04-16 15:24:48 +02:00
Stian Thorgersen 6e5820ea11 Merge pull request #1153 from stianst/master
KEYCLOAK-1061 Add back to application link to error page
2015-04-16 14:41:10 +02:00
Stian Thorgersen 115e533a71 KEYCLOAK-1061 Add back to application link to error page
KEYCLOAK-1148 space in redirect uri gives error
2015-04-16 14:17:32 +02:00
Stian Thorgersen 495ab25301 Merge pull request #1152 from stianst/master
KEYCLOAK-1207 Invalid direct access example
2015-04-16 12:54:46 +02:00
Stian Thorgersen afe4f84135 KEYCLOAK-1207 Invalid direct access example 2015-04-16 12:54:14 +02:00
Stian Thorgersen 7d853dabe4 Merge pull request #1151 from stianst/master
KEYCLOAK-1212 CORS requests blocked on OPTIONS request
2015-04-16 12:50:55 +02:00
fiorenzo pizza e32d7c52fc first commit 2015-04-16 12:47:17 +02:00
Stian Thorgersen 5addabe893 KEYCLOAK-1212 CORS requests blocked on OPTIONS request 2015-04-16 11:27:30 +02:00
Stian Thorgersen 0daa3ee29f Merge pull request #1150 from stianst/master
Update not found and forbidden in admin console
2015-04-16 10:36:24 +02:00
Stian Thorgersen 9c5e38a023 Updated not found and forbidden access to show a proper page instead of just notification 2015-04-16 10:35:52 +02:00
Stian Thorgersen d42c917448 Fix styling on not found page 2015-04-16 09:32:37 +02:00
Stian Thorgersen 8fb60226c8 Merge pull request #1149 from stianst/master
Hide realm caret if only one realm
2015-04-16 09:23:42 +02:00
Stian Thorgersen fda190de01 Hide realm caret if only one realm 2015-04-16 09:23:25 +02:00
Stian Thorgersen 58dd353238 Merge pull request #1148 from stianst/kc-context
KEYCLOAK-1213 Installation file for bearer-only doesn't include auth-ser...
2015-04-16 09:20:22 +02:00
Stian Thorgersen 0027d22964 KEYCLOAK-1213 Installation file for bearer-only doesn't include auth-server-url 2015-04-16 09:19:55 +02:00
Stian Thorgersen 1a05f0f3b4 Merge pull request #1145 from ssilvert/run-kc-as-root-context
Document how to run Keycloak Server as root context.
2015-04-16 09:11:55 +02:00
Bill Burke 476da4e3e0 Merge pull request #1146 from patriot1burke/master
phased broker mapper changes
2015-04-15 11:21:26 -04:00
Bill Burke edb9f0cecf merge conflicts 2015-04-15 11:18:47 -04:00
Bill Burke 0addc4cf58 broker mapper mgmt 2015-04-15 11:10:53 -04:00
Tilen Faganel 770d2d8a4c [KEYCLOAK-1211] Fixed Active Directory users authenticating without providing a password 2015-04-15 16:59:55 +02:00
Stan Silvert f4898884e4 Document how to run Keycloak Server as root context. 2015-04-15 10:36:38 -04:00
Stian Thorgersen 5ef1ddb9f1 Merge pull request #1143 from stianst/kc-context
Added KeycloakContext
2015-04-15 14:02:14 +02:00
Stian Thorgersen f3e5541b7d KEYCLOAK-1109 Added KeycloakContext
KEYCLOAK-1042 Access to Cookies within Events
KEYCLOAK-1209 Enable jboss-logging event listener by default and allow configuring log level
2015-04-15 13:34:54 +02:00
Stian Thorgersen a19a3f4277 Merge pull request #1142 from stianst/master
Improvements to password history policy and tests
2015-04-15 12:57:42 +02:00
Stian Thorgersen 3f327326aa Improvements to password history policy and tests 2015-04-15 12:14:28 +02:00
Stian Thorgersen 29ea24c8fb Merge pull request #1141 from dbarentine/master
[KEYCLOAK-1205] Fix BearerAuthFilter refreshing token
2015-04-15 11:09:26 +02:00
Dane Barentine 4fe328002a [KEYCLOAK-1206] Change role mapping path in admin client to match API changes 2015-04-14 22:21:28 -07:00
Dane Barentine b1b149e0c3 [KEYCLOAK-1205] Fix BearerAuthFilter refreshing token after it's expired 2015-04-14 22:19:07 -07:00
Stian Thorgersen 47da227809 Merge pull request #1132 from girirajsharma/master
[KEYCLOAK-405] - Feature that doesn't allow old password to be reused
2015-04-15 06:53:07 +02:00
Stian Thorgersen 43d33260c9 Merge pull request #1140 from jean-merelis/work
update translation (pt-BR) for version 1.2.0.RC1
2015-04-15 06:52:04 +02:00
girirajsharma ad715371a3 Added password policy test cases for regex and password history. 2015-04-15 02:08:06 +05:30
girirajsharma 0ff4b6dd93 [KEYCLOAK-405]-Fixed deletion of expired Credentials if policy removed. 2015-04-15 02:08:05 +05:30
girirajsharma e3bb61248a [KEYCLOAK-405] - Feature that doesn't allow old password to be reused 2015-04-15 02:08:05 +05:30
jean e75e85cf80 update translation (pt-BR) for version 1.2.0.RC1 2015-04-14 10:25:17 -03:00
Stian Thorgersen 375d061f58 Merge pull request #1139 from stianst/master
Updates to dev docs
2015-04-14 10:39:00 +02:00
Stian Thorgersen 78eb5acb8e Updates to README.md 2015-04-14 10:38:25 +02:00
Stian Thorgersen 656a5c4baa Updated hacking on KC guide 2015-04-14 10:31:07 +02:00
Stian Thorgersen b8d05c452c Merge pull request #1138 from stianst/master
KEYCLOAK-1187
2015-04-14 09:28:26 +02:00
Stian Thorgersen f6631a6163 KEYCLOAK-1187 2015-04-14 09:28:05 +02:00
Stian Thorgersen c0f6b6d8d0 Updated README.md and started HackingOnKeycloak guide 2015-04-14 09:27:51 +02:00
Stian Thorgersen d13acaa9ef Merge pull request #1137 from stianst/master
KEYCLOAK-1187
2015-04-14 09:27:24 +02:00
Stian Thorgersen 8ebac35706 Removed Thread.sleep from tests and replaced with Time.offset 2015-04-14 08:59:22 +02:00
Stian Thorgersen 517e42f13d KEYCLOAK-1187 2015-04-14 08:05:24 +02:00
Stian Thorgersen 9c6e6c8284 KEYCLOAK-1187 2015-04-14 07:49:18 +02:00
Stian Thorgersen a9ed193826 KEYCLOAK-1187 2015-04-14 07:36:30 +02:00
Stian Thorgersen a94fd9a098 APPLICATION_DEFAULT_ROLES and APP_NODE_REGISTRATIONS to CLIENT_... 2015-04-14 07:36:30 +02:00
Stian Thorgersen 411ff56499 RealmEntity.applications --> RealmEntity.clients 2015-04-14 07:36:30 +02:00
Stian Thorgersen c70d12a411 Renamed entity master admin app to master admin client 2015-04-14 07:36:30 +02:00
Bill Burke d4f138cadc Merge pull request #1136 from dbarentine/master
KEYCLOAK-1202 Set AudienceRestriction to the issuer from the original re...
2015-04-13 20:15:49 -04:00
Dane Barentine da70391677 KEYCLOAK-1202 Set AudienceRestriction to the issuer from the original request. 2015-04-13 12:47:40 -07:00
Bill Burke f61fb4ba18 fix conflicts 2015-04-13 09:59:59 -04:00
Bill Burke d2a5403527 refactor for broker mappers 2015-04-13 09:45:23 -04:00
Stian Thorgersen 06ac706057 Merge pull request #1135 from stianst/master
Updated example jsons
2015-04-13 14:23:58 +02:00
Stian Thorgersen 4abd62661f Updated example jsons 2015-04-13 14:23:41 +02:00
Stian Thorgersen f56f1c85b9 Merge pull request #1134 from stianst/master
KEYCLOAK-1187
2015-04-13 14:18:18 +02:00
Stian Thorgersen 46e386cd43 KEYCLOAK-1187 2015-04-13 13:54:30 +02:00
Stian Thorgersen 600353899a KEYCLOAK-1187 2015-04-13 13:32:18 +02:00
Stian Thorgersen 4fbbf39c51 KEYCLOAK-1187 Admin console and endpoints 2015-04-13 13:29:31 +02:00
Stian Thorgersen 9a047eda36 KEYCLOAK-1187 Updated representations 2015-04-13 10:13:32 +02:00
Stian Thorgersen 716bf104db Merge pull request #1133 from stianst/master
More work on KEYCLOAK-1187
2015-04-10 14:46:41 +02:00
Stian Thorgersen f435a8c6df Remove @Test on methods in AdapterTestStrategy. These are not executed from other test classes. Having the @Test on methods in a non-empty constructor causes IntelliJ to complain 2015-04-10 13:35:27 +02:00
Stian Thorgersen a18715a774 Deprecate OAuthClientRepresentation and ApplicationRepresentation and added ClientRepresentation 2015-04-10 13:33:29 +02:00
Stian Thorgersen f0f0aae88d Merge pull request #1131 from stianst/master
KEYCLOAK-1187 DB migration support for oauth/application to client
2015-04-10 09:48:34 +02:00
Stian Thorgersen 4ae9310f83 KEYCLOAK-1187 DB migration support for oauth/application to client 2015-04-10 09:21:34 +02:00
Stian Thorgersen 1567982f0b Merge pull request #1128 from ssilvert/KEYCLOAK-1174-NPE-on-WF9
KEYCLOAK-1174: NPE on WildFly 9
2015-04-10 07:05:46 +02:00
Stan Silvert 875aae91fc Add owner attribute to Keycloak server deployment 2015-04-09 14:52:47 -04:00
Stan Silvert bbef4e2be1 KEYCLOAK-1174: Refactor KeycloakAdapterConfigService to be a simple
singleton
2015-04-09 10:30:39 -04:00
Stian Thorgersen 4955f36115 Merge pull request #1125 from velias/KEYCLOAK-1195
KEYCLOAK-1195 - added identity brokes ordering for login page
2015-04-09 15:44:43 +02:00
Vlastimil Elias 0606cb4a5e KEYCLOAK-1195 - added identity brokes ordering for login page 2015-04-09 14:39:00 +02:00
Stian Thorgersen 85e7cf5783 Merge pull request #1127 from stianst/master
KEYCLOAK-1187 First round
2015-04-09 13:13:01 +02:00
Stian Thorgersen 6fbc0975c0 KEYCLOAK-1187 First round: Combined ApplicationModel and OAuthClientModel into ClientModel. Removed OAuth Clients from Admin console and renamed Applications to Clients. 2015-04-09 12:27:30 +02:00
Marek Posolda b92a178142 Merge pull request #1126 from mposolda/master
KEYCLOAK-1007 Fork Picketlink LDAP code. Remove picketlink dependencies ...
2015-04-08 22:52:57 +02:00
mposolda eb5ae4aae9 KEYCLOAK-1007 Fork Picketlink LDAP code. Remove picketlink dependencies from LDAP Federation provider 2015-04-08 22:04:02 +02:00
Bill Burke dc23ef6188 Merge pull request #1124 from jpkrohling/JPK-Typos
KEYCLOAK-1192 KEYCLOAK-1193 KEYCLOAK-1194 - Fixed typos in tooltip and documentation.
2015-04-08 11:21:43 -04:00
Juraci Paixão Kröhling b0b28a9f38 KEYCLOAK-1192 KEYCLOAK-1193 KEYCLOAK-1194 - Fixed typos in tooltip and documentation. 2015-04-08 14:20:01 +02:00
Stian Thorgersen e6f6f92403 Merge pull request #1121 from velias/KEYCLOAK-1182
KEYCLOAK-1182 - string values for user profile are now sanitized during reading from social providers
2015-04-08 09:49:43 +02:00
Bill Burke 63f8d92a8b Merge pull request #1123 from patriot1burke/master
broker mapper datamodel
2015-04-07 20:44:50 -04:00
Bill Burke a42a750ebb Merge remote-tracking branch 'upstream/master' 2015-04-07 18:04:15 -04:00
Bill Burke 335832d553 broker mapper datamodel 2015-04-07 18:04:03 -04:00
Vlastimil Elias ac1e8e8389 KEYCLOAK-1182 - string values for user profile are now sanitized during
reading from social providers. Related unit tests added.
2015-04-07 14:01:31 +02:00
Marek Posolda 448fb35a72 Merge pull request #1120 from mposolda/master
KEYCLOAK-1181 Running liquibase updates via maven plugin doesn't work
2015-04-07 11:24:08 +02:00
mposolda 2ba2e7768d KEYCLOAK-1181 Running Liquibase updates via maven plugin doesn't work 2015-04-07 10:27:44 +02:00
mposolda d0ead0f0a0 More logging 2015-04-07 08:46:39 +02:00
Bill Burke 463310e1c3 Merge pull request #1113 from girirajsharma/master
[KEYCLOAK-400]Provide a configuration for regex in the password policies
2015-04-03 15:00:57 -04:00
Bill Burke 5ca9af0b1d Merge pull request #1118 from patriot1burke/master
initial Picketlink SAML fork
2015-04-03 14:32:21 -04:00
Bill Burke e795bdc16c Merge remote-tracking branch 'upstream/master' 2015-04-03 14:04:35 -04:00
Bill Burke 37306e689d initial Picketlink SAML fork 2015-04-03 14:04:19 -04:00
girirajsharma ca13e3c4ba [KEYCLOAK-400]Provide a configuration for regex in the password policies 2015-04-02 23:37:25 +05:30
Bill Burke 3a5861c624 Merge pull request #1117 from patriot1burke/master
bump pom version
2015-04-02 09:37:15 -04:00
Bill Burke 326818ea45 bump pom versio 2015-04-02 09:36:43 -04:00
Stian Thorgersen 148b466ce4 Merge pull request #1115 from mposolda/master
Fix clustering when auth-server-url-for-backend-requests is used
2015-04-02 13:13:56 +02:00
Stian Thorgersen 18e4be3cc9 Merge pull request #1116 from stianst/master
Comment out store tokens in admin console, and store/retrieve tokens in ...
2015-04-02 13:13:41 +02:00
Stian Thorgersen 1738429e10 Comment out store tokens in admin console, and store/retrieve tokens in docs 2015-04-02 13:13:17 +02:00
mposolda 6a34ad36f5 Fix clustering when auth-server-url-for-backend-requests is used 2015-04-02 13:02:24 +02:00
mposolda 56a9451128 minor improve in fuse example 2015-04-02 10:43:29 +02:00
Bill Burke 96e188bcae Merge pull request #1114 from patriot1burke/master
disable token exchange ui/example
2015-04-01 15:57:20 -04:00
Bill Burke 952b2fc83d disable token exchange ui/example 2015-04-01 15:56:52 -04:00
mposolda 15dfb6180c Fix fuse example 2015-04-01 18:03:16 +02:00
Bill Burke fc18190c5d Merge pull request #1111 from patriot1burke/master
expire cookie on backchannel
2015-04-01 11:28:00 -04:00
Bill Burke 10ced1e908 Merge remote-tracking branch 'upstream/master' 2015-04-01 10:33:25 -04:00
Bill Burke 1d56805faf unique username for brokered user 2015-04-01 10:32:47 -04:00
mposolda 41bf97ff40 Fix Cors example 2015-04-01 16:28:09 +02:00
mposolda 839ce470c2 Fixing broker examples 2015-04-01 14:41:37 +02:00
Stian Thorgersen 5f0b3ae019 Added instructions on deploying provider examples using jboss-cli 2015-04-01 14:22:17 +02:00
Stian Thorgersen bdbb1b891a KEYCLOAK-1170 User details for customer-portal-js are all null 2015-04-01 13:53:22 +02:00
Stian Thorgersen 48c7bd1b5e KEYCLOAK-1171 Missing parameters: response_type login to oauth-client and oauth-client-cdi 2015-04-01 13:50:50 +02:00
Stian Thorgersen 41828cd865 Prompt query param not added correctly after OIDC refactoring 2015-04-01 13:33:28 +02:00
Marek Posolda ded9a9f98c Merge pull request #1112 from mposolda/master
KEYCLOAK-1169 KEYCLOAK-1151
2015-04-01 11:44:37 +02:00
mposolda 42541d74b5 KEYCLOAK-1151 AuthorizationURL for custom social logins should perserve query parameters 2015-04-01 11:00:02 +02:00
mposolda a5567ead7a KEYCLOAK-1169 Skip DB write at each broker login if 3rd party token is not required 2015-04-01 11:00:02 +02:00
Stian Thorgersen 58068946e4 Formatting for KEYCLOAK-1113 2015-04-01 10:52:15 +02:00
Stian Thorgersen a2c4a1f760 Merge branch 'KEYCLOAK-1113' of https://github.com/velias/keycloak into velias-KEYCLOAK-1113
Conflicts:
	services/src/main/java/org/keycloak/services/resources/LoginActionsService.java
2015-04-01 09:45:13 +02:00
Stian Thorgersen fabb34445f KEYCLOAK-1093
Update docs for subsystem and domain mode
2015-04-01 09:36:06 +02:00
Stian Thorgersen a95d36eeb5 Fix to db changelog 2015-04-01 07:36:58 +02:00
Stian Thorgersen f9d814598e KEYCLOAK-946 Only show endpoints relevant for admin rest api 2015-04-01 07:31:17 +02:00
Stian Thorgersen abf8aea3f6 Merge pull request #1110 from ssilvert/KEYCLOAK-1166-admin-access-example-broken
KEYCLOAK-1166 Admin Access Example Broken
2015-04-01 06:33:00 +02:00
Bill Burke 03bfca5e41 expire cookie on backchannel 2015-03-31 19:33:43 -04:00
Bill Burke ecb6b2f7e9 Merge pull request #1109 from patriot1burke/master
jwks parsing on import
2015-03-31 15:02:07 -04:00
Stan Silvert 89f2f64042 Fix doc for this. 2015-03-31 14:59:58 -04:00
Stan Silvert 6e39c3d2f7 KEYCLOAK-1166 Admin Access Example Broken 2015-03-31 14:53:38 -04:00
Bill Burke e3754c472b Merge remote-tracking branch 'upstream/master' 2015-03-31 14:25:39 -04:00
Bill Burke 2d7e861086 jwks parsing 2015-03-31 14:25:26 -04:00
Stian Thorgersen 799c9da1c1 Merge pull request #1107 from stianst/master
Removed admin audit events - needs a rethink
2015-03-31 18:41:33 +02:00
Marek Posolda 04773f6aaf Merge pull request #1108 from mposolda/master
Migration docs, fixes
2015-03-31 17:43:08 +02:00
mposolda 4c1f2445e3 Bigger 'redirect URI' field in admin console, so it's not partially hidden 2015-03-31 17:10:19 +02:00
mposolda 783f11e6b8 KEYCLOAK-1121 KEYCLOAK-1122 Update migration guide about protocol mappers and identity brokers 2015-03-31 16:50:10 +02:00
mposolda 3256337614 CookieTokenStore not working correctly on EAP 6.3 2015-03-31 14:53:37 +02:00
Stian Thorgersen 969b1bf33c KEYCLOAK-1125 Update provider documentation and example and add instructions on using jboss-cli to create module 2015-03-31 14:42:58 +02:00
Stian Thorgersen fcc2e0a9f0 Removed admin audit events - need to rethink how to implement it 2015-03-31 14:37:54 +02:00
Stian Thorgersen 4a650e5417 Merge pull request #1104 from girirajsharma/master
Removed unused bcmail bouncycastle dependency.
2015-03-31 14:33:02 +02:00
girirajsharma 0077741a74 Removed unused bcmail bouncycastle dependency. 2015-03-31 17:07:28 +05:30
Stian Thorgersen 7d320392f2 KEYCLOAK-1149 app cred field not wide enough 2015-03-31 09:14:56 +02:00
Marek Posolda ade3b4eb75 Merge pull request #1102 from mposolda/master
Added bouncycastle module to EAP6 and AS7 packaging. Kerberos example README fix
2015-03-30 18:05:17 +02:00
mposolda 96b48877b8 Added bouncycastle module to EAP6 and AS7 packaging as it's not here by default 2015-03-30 17:59:49 +02:00
mposolda 13639a1bcc Minor fix in kerberos example 2015-03-30 17:59:49 +02:00
Stian Thorgersen 76309c1dcb Merge pull request #1101 from jean-merelis/work
pt-BR Internationalization support for pr #1097
2015-03-30 16:03:15 +02:00
Stian Thorgersen 99b67dfd6c Merge pull request #1100 from stianst/master
Admin audit events
2015-03-30 15:45:25 +02:00
Stian Thorgersen b777534411 KEYCLOAK-1140 Display redirect uri on identity provider detail page 2015-03-30 15:45:15 +02:00
jean f62f0d4877 pt-BR Internationalization support #1097 2015-03-30 10:17:51 -03:00
Stian Thorgersen 96dad77c66 KEYCLOAK-392 Admin events 2015-03-30 14:38:32 +02:00
girirajsharma 962b623b4a [KEYCLOAK-392] - Admin audit events 2015-03-30 14:06:01 +02:00
Vlastimil Elias 01094663bf KEYCLOAK-1113 - profile update now uses correct form validation also 2015-03-30 12:53:05 +02:00
Vlastimil Elias 31a80a973c KEYCLOAK-1113 - user registration form input boxes and labels are red on
error (css class is configurable in theme, has-error used for
patternfly)
2015-03-30 09:05:48 +02:00
Stian Thorgersen f8b25cad7f Merge pull request #1097 from gerbermichi/i18n
[KEYCLOAK-301] Internationalization support (4rd pr)
2015-03-30 08:25:03 +02:00
Michael Gerber 7b820a4eed i18n for default claims
role description i18n

tests

typo

fix unit test
2015-03-29 11:34:53 +02:00
Bill Burke 2c28223115 Merge pull request #1092 from dbarentine/master
KEYCLOAK-1154, KEYCLOAK-1155 Changes
2015-03-27 12:35:48 -04:00
Bill Burke e464947abe Merge pull request #1096 from patriot1burke/master
broker fixes
2015-03-27 12:35:36 -04:00
Bill Burke 878ce0761d broker fixes 2015-03-27 12:13:48 -04:00
Vlastimil Elias 8727aef647 KEYCLOAK-1113 - LoginFormProvider extended to allow per field errors,
freemarker implementation extended (backward compatible), used for
registration form
2015-03-27 15:41:42 +01:00
Stian Thorgersen 48050de1a6 KEYCLOAK-1128 Add changes to themes to migration guide 2015-03-27 12:07:39 +01:00
Stian Thorgersen ff11a377da Merge pull request #1094 from velias/KEYCLOAK-1141
KEYCLOAK-1141 - name of federated identity provider added back to acount management
2015-03-27 11:32:38 +01:00
Stian Thorgersen 3c1d8d56e5 Merge pull request #1095 from stianst/master
KEYCLOAK-1021 Add tar.gz version to dists
2015-03-27 11:22:28 +01:00
Stian Thorgersen 58db94209a KEYCLOAK-1021 Add tar.gz version to dists 2015-03-27 11:03:46 +01:00
Vlastimil Elias 2c8c741a0b KEYCLOAK-1141 - name of federated identity provider added back to acount
management page
2015-03-27 10:26:03 +01:00
Stian Thorgersen 37e732c64d Merge pull request #1093 from stianst/master
KEYCLOAK-1137 Access to logged in user data (first/last name) on any pag...
2015-03-27 08:52:46 +01:00
Stian Thorgersen be13b88d24 KEYCLOAK-1137 Access to logged in user data (first/last name) on any page in freemarker 2015-03-27 08:08:20 +01:00
Dane Barentine b5d5f340ba KEYCLOAK-1155 Added SSL support for MongoDB connections 2015-03-26 10:53:11 -07:00
Dane Barentine 3b15da2fdd KEYCLOAK-1154 Set Conditions and SubjectConfirmationData NotOnOrAfter values based on realm settings 2015-03-26 10:51:09 -07:00
Bill Burke f6d3e76b67 Merge pull request #1090 from stianst/master
KEYCLOAK-1146 Order of First/Last name form fields is inconsistent
2015-03-26 13:07:26 -04:00
Bill Burke 019766fba1 Merge pull request #1091 from patriot1burke/master
fix query parsing
2015-03-26 13:07:00 -04:00
Bill Burke 9d7db174e1 merged 2015-03-26 13:06:50 -04:00
Bill Burke c20ab4a9a6 fix query parsing 2015-03-26 13:05:09 -04:00
Stian Thorgersen 62fddda24d KEYCLOAK-1146 Order of First/Last name form fields is inconsistent 2015-03-26 16:18:38 +01:00
Stian Thorgersen b82be5ca29 Merge fixes 2015-03-26 14:27:30 +01:00
Stian Thorgersen cd1315e839 Fix file encoding for message bundles 2015-03-26 13:55:13 +01:00
Stian Thorgersen 16cb3c31c0 KEYCLOAK-1123 Add note that db has changed to migration guide 2015-03-26 13:50:36 +01:00
Stian Thorgersen 720ea7bd76 Add option to configure KeycloakServer through ~/.keycloak-server.properties 2015-03-26 13:50:36 +01:00
Stian Thorgersen b727087f04 KEYCLOAK-1150
'iss' should be URL not just realm name
2015-03-26 13:50:36 +01:00
Bill Burke d36ee0d0af Merge pull request #1088 from patriot1burke/master
oidc and saml broker backchannel logout
2015-03-26 08:43:21 -04:00
Stian Thorgersen daae3045ae Merge pull request #1084 from jean-merelis/work
KEYCLOAK-1135 add Realm name in email messages
2015-03-26 13:00:16 +01:00
mposolda 5566ad008f Minor 2015-03-26 11:51:16 +01:00
Marek Posolda f482e16998 Merge pull request #1089 from mposolda/master
JSON migration of protocol mappers, fixing oracle
2015-03-26 11:50:15 +01:00
mposolda 477d8b35e3 KEYCLOAK-1116 KEYCLOAK-1117 JSON migration and removal of ClientModel.claimsMask 2015-03-26 11:49:22 +01:00
mposolda 2599e77491 Fix oracle 2015-03-26 08:10:26 +01:00
Bill Burke bb6cf95948 merge 2015-03-25 19:23:51 -04:00
Bill Burke f64d84b03a Merge remote-tracking branch 'upstream/master' 2015-03-25 19:02:23 -04:00
Bill Burke e0c70e1c47 oidc broker backchannel logout 2015-03-25 19:02:07 -04:00
Bill Burke 13268c52c6 saml backchannel logout 2015-03-25 16:51:25 -04:00
Stian Thorgersen 14683882e8 KEYCLOAK-1138 Appliance distribution from master failes with ClassNotFoundException 2015-03-25 10:11:56 +01:00
Bill Burke 82dd3cf8a4 Merge pull request #1087 from patriot1burke/master
broker backchannel logout
2015-03-24 16:58:22 -04:00
Marek Posolda 88a90111bb Merge pull request #1086 from mposolda/master
KEYCLOAK-1004 Jpa migration for 1.2.0.Beta1
2015-03-24 21:48:51 +01:00
Bill Burke eb85e6d7c4 Merge remote-tracking branch 'upstream/master' 2015-03-24 16:05:07 -04:00
Bill Burke 71de12b446 broker backchannel logout 2015-03-24 16:03:46 -04:00
mposolda cc784ecb46 KEYCLOAK-1004 Jpa migration for 1.2.0.Beta1 2015-03-24 18:44:20 +01:00
Bill Burke d1bfb26ebf Merge pull request #1085 from patriot1burke/master
broker ui improvements
2015-03-24 10:28:10 -04:00
Bill Burke 4a0f6eca11 broker ui improvements 2015-03-24 10:27:01 -04:00
jean be95646061 KEYCLOAK-1135 add Realm name in email messages 2015-03-24 10:49:58 -03:00
Bill Burke e9aac561d3 Merge pull request #1083 from velias/KEYCLOAK-1046
KEYCLOAK-1046 - StackOverflow social login provider implementation
2015-03-24 08:31:36 -04:00
Vlastimil Elias ee742be811 KEYCLOAK-1046 - added modules definition, tests and documentation 2015-03-24 08:49:31 +01:00
Stian Thorgersen b10b871c3c Enable pt-br 2015-03-24 07:35:11 +01:00
Stian Thorgersen c134ebc0c0 Merge pull request #1079 from jean-merelis/master
support for i8n pt-BR
2015-03-24 06:12:16 +01:00
Bill Burke 4681148b1a Merge pull request #1082 from patriot1burke/master
broker oidc logout and console fixes
2015-03-23 21:39:37 -04:00
Bill Burke c3859fa34f oidc logout and console fixes 2015-03-23 21:30:56 -04:00
Bill Burke 5a7cefb198 Merge remote-tracking branch 'upstream/master' 2015-03-23 13:21:28 -04:00
Bill Burke 410953fc5f broker oidc logout 2015-03-23 13:21:17 -04:00
Marek Posolda 19c6fe368f Merge pull request #1081 from mposolda/master
KEYCLOAK-1106 Incorrect table mapping (realm_application)
2015-03-23 18:06:20 +01:00
Vlastimil Elias c2fe63db63 KEYCLOAK-1046 - StackOverflow social login provider implementation 2015-03-23 17:48:26 +01:00
Vlastimil Elias a474051869 LinkedIn configuration page template moved to reflect new folder
structure of themes
2015-03-23 17:45:01 +01:00
mposolda b8b0ecc419 KEYCLOAK-1106 Incorrect table mapping (realm_application) 2015-03-23 17:35:41 +01:00
Vlastimil Elias f2485bf56b KEYCLOAK-1046 - SimpleHttp is now able to process gzip encoded responses 2015-03-23 16:37:46 +01:00
jean 12ed875154 support for i8n pt-BR 2015-03-23 09:56:23 -03:00
Marek Posolda 8d69ef95f5 Merge pull request #1078 from mposolda/master
Fix databases, mongo, infinispan and active directory
2015-03-23 13:46:24 +01:00
mposolda fe8395bff7 Fix databases, mongo, infinispan and active directory 2015-03-23 12:57:01 +01:00
Stian Thorgersen 339a312d69 Merge pull request #1077 from stianst/jar-theme
Jar theme
2015-03-23 11:31:00 +01:00
Stian Thorgersen cd748e4482 Merge pull request #1076 from velias/KEYCLOAK-28
KEYCLOAK-28 - Login with LinkedIn
2015-03-23 11:30:21 +01:00
Stian Thorgersen 1dadfc9726 Updated themes docs 2015-03-23 11:10:16 +01:00
Stian Thorgersen a3073db6c0 Update theme examples for new theme structure 2015-03-23 11:10:15 +01:00
Stian Thorgersen 97d7fd65c2 KEYCLOAK-1127 Change theme structure from 'type/name' to 'name/type' 2015-03-23 11:10:15 +01:00
Vlastimil Elias e35afb66c1 KEYCLOAK-28 - added LinkedIn social login documentation into reference
guide
2015-03-23 10:43:53 +01:00
Vlastimil Elias c21d110b4c KEYCLOAK-28 - Login with LinkedIn 2015-03-23 10:24:01 +01:00
Stian Thorgersen acef322ea3 Merge pull request #1072 from gerbermichi/i18n
[KEYCLOAK-301] Internationalization support (3rd pr)
2015-03-23 06:35:59 +01:00
Bill Burke f625b92cb2 Merge pull request #1074 from patriot1burke/master
oidc logout profile
2015-03-22 13:59:50 -04:00
Bill Burke f546358d66 oidc logout profile 2015-03-22 12:45:36 -04:00
Bill Burke 1700cb149b Merge pull request #1073 from patriot1burke/master
broker logout
2015-03-20 19:51:10 -04:00
Bill Burke 97d5f4aafc broker refactor 2015-03-20 18:56:25 -04:00
Michael Gerber 06e02e8026 i18n for code.ftl
i18n for login-oauth-grant.ftl

i18n for account.ftl

i18n for account.ftl

i18n for federatedIdentity.ftl

i18n for log.ftl

i18n for password.ftl

i18n for sessions.ftl

i18n for template.ftl

i18n for totp.ftl

i18nfix

i18n messages cleanup
advanced message formater for claim and role
2015-03-20 19:32:38 +01:00
Bill Burke 90c815055d broker logout 2015-03-20 12:13:33 -04:00
Stian Thorgersen abb22296b7 Merge pull request #1071 from stianst/jar-theme
Fix formatting of README.md
2015-03-20 14:50:11 +01:00
Stian Thorgersen 4494c2a731 Fix module theme loader 2015-03-20 14:49:46 +01:00
Stian Thorgersen bf9830dae8 Fix formatting of README.md 2015-03-20 14:20:51 +01:00
Stian Thorgersen 404faeeaed Merge pull request #1070 from stianst/jar-theme
KEYCLOAK-498 Package theme as a JAR
2015-03-20 14:14:09 +01:00
Stian Thorgersen 8ed1c475e4 KEYCLOAK-498 Package theme as a JAR 2015-03-20 14:13:25 +01:00
Stian Thorgersen 4109371b56 Merge pull request #1069 from stianst/master
Hide internationalization options if internationalization is not enabled
2015-03-20 10:21:04 +01:00
Stian Thorgersen 06a554068f Hide internationalization options if internationalization is not enabled 2015-03-20 10:20:46 +01:00
Stian Thorgersen dd2a5df654 Merge pull request #1068 from stianst/master
KEYCLOAK-1100 Clicking on mapper name for account application fails
2015-03-20 08:50:42 +01:00
Stian Thorgersen 06a45170ef KEYCLOAK-1100 Clicking on mapper name for account application fails 2015-03-20 08:50:24 +01:00
Stian Thorgersen f46784380f Merge pull request #1067 from stianst/master
KEYCLOAK-1062 Document how to configure listeners
2015-03-20 08:40:26 +01:00
Stian Thorgersen d44cc8639d KEYCLOAK-1062 Document how to configure listeners 2015-03-20 08:40:05 +01:00
Stian Thorgersen 545521137d Merge pull request #1066 from stianst/master
KEYCLOAK-1076 XML tag <enable-basic-auth> needed in secure-deployments f...
2015-03-20 08:25:18 +01:00
Stian Thorgersen 1714ce91d1 KEYCLOAK-1076 XML tag <enable-basic-auth> needed in secure-deployments for AS-7 subsystem 2015-03-20 07:37:16 +01:00
Stian Thorgersen 3efb5d2650 Merge pull request #1065 from stianst/master
KEYCLOAK-1110 Fix role not removed from default roles when not deleted
2015-03-20 07:30:09 +01:00
Stian Thorgersen 93f9706297 KEYCLOAK-1110 Fix role not removed from default roles when not deleted 2015-03-20 06:17:35 +01:00
Stian Thorgersen 1d4e8118f0 Updated admin-client to use new token endpoint 2015-03-20 06:04:36 +01:00
Stian Thorgersen 71c7d8e48b Merge pull request #1062 from velias/KEYCLOAK-1053
KEYCLOAK-1053 patch of email validation during social login without email
2015-03-20 05:37:16 +01:00
Stian Thorgersen 6e967ab261 Merge pull request #1059 from ssilvert/connectionsFile
Minor doc fix for json file persistence.
2015-03-20 05:34:44 +01:00
Stian Thorgersen cd2172df4a Merge pull request #1064 from gerbermichi/i18n
[KEYCLOAK-301] Internationalization support (second pr)
2015-03-20 05:34:20 +01:00
Michael Gerber d8193f0f25 ui_locales as specified in:
http://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3.1.2

replace ' through '' and introduce msg method for i18n in *.ftl files

replace ' through '' and introduce msg method for i18n in *.ftl files

css dorpdown

get current url with locale as query parameter

Introduce LocaleBean

add css dropdown to account page

css styling...

css styling...
2015-03-19 21:28:55 +01:00
Marek Posolda de4c05e484 Merge pull request #1063 from mposolda/master
Mongo migration, MigrationUtils
2015-03-19 20:35:20 +01:00
mposolda a65bac7751 Mongo migration: admin roles, timeout, protocol mappers 2015-03-19 19:58:19 +01:00
mposolda 82e290e06c Minor model fix 2015-03-19 19:58:19 +01:00
Vlastimil Elias c0cf537654 KEYCLOAK-1053 - social login do not fail when email validation is
enabled for realm but email is not provided by social login provider
(eg. Twitter)
2015-03-19 17:19:55 +01:00
Stian Thorgersen e1188e0c68 Merge pull request #1061 from stianst/master
KEYCLOAK-1115 Horizontal scrollbar on login screen with low resolution
2015-03-19 16:30:03 +01:00
Stian Thorgersen f18c0af49c KEYCLOAK-1115 Horizontal scrollbar on login screen with low resolution 2015-03-19 16:28:16 +01:00
Stian Thorgersen 8a38597b3a Merge pull request #1060 from stianst/master
KEYCLOAK-1080 Unrecognized field social when importing from 1.1.0.Final
2015-03-19 14:50:49 +01:00
Stian Thorgersen 0c16bdb31d KEYCLOAK-1080 Unrecognized field social when importing from 1.1.0.Final 2015-03-19 14:27:24 +01:00
Bill Burke b26277a17c broker fixes 2015-03-18 21:58:04 -04:00
Stan Silvert 8f90509a3c Minor doc fix for json file persistence. 2015-03-18 11:28:42 -04:00
Marek Posolda 3912c60ebc Merge pull request #1058 from mposolda/master
Fix google and twitter examples
2015-03-18 12:01:41 +01:00
mposolda cc5efc629d Fix google and twitter examples 2015-03-18 11:59:40 +01:00
Marek Posolda b8d5109744 Merge pull request #1057 from mposolda/master
KEYCLOAK-1108 Remove option for enable/disable login per app. Few other minor fixes
2015-03-18 10:36:44 +01:00
mposolda 24f18609dd Update federated links when identity provider alias is changed 2015-03-18 09:43:53 +01:00
mposolda 8c4f45fd38 Fix CSS of social buttons on login screen 2015-03-18 09:43:53 +01:00
mposolda aeb27ff047 KEYCLOAK-1108 Remove option for enable/disable login per application 2015-03-18 09:43:53 +01:00
Bill Burke 48adefdbea Merge pull request #1055 from ssilvert/KEYCLOAK-1105-refactor-InMemoryModel
KEYCLOAK-1105 Refactor InMemoryModel
2015-03-17 19:27:29 -04:00
Bill Burke cc0231e5aa Merge pull request #1056 from patriot1burke/master
saml broker import/export, and module fixes
2015-03-17 19:21:32 -04:00
Bill Burke ce2c4188fb saml broker import/export, and module fixes 2015-03-17 19:20:46 -04:00
Stan Silvert 68b88b4baf KEYCLOAK-1105 Refactor InMemoryModel to use a factory instead of a
singleton.
2015-03-17 16:16:39 -04:00
Stan Silvert ecadc92f40 KEYCLOAK-1105 fix file profile in testsuite 2015-03-17 16:16:38 -04:00
Stian Thorgersen 13b22d6644 KEYCLOAK-1107 saml and oidc broker options don't sho 2015-03-17 12:10:53 +01:00
Marek Posolda b6b4731f9e Merge pull request #1054 from mposolda/master
Fix broker packaging and facebook example
2015-03-17 10:57:42 +01:00
mposolda d3e75084de Fix broker packaging and facebook example 2015-03-17 10:55:06 +01:00
Stian Thorgersen c650a8d52d KEYCLOAK-752 Upgrade Liquibase 2015-03-17 09:32:50 +01:00
Stian Thorgersen b4af5c4a1e KEYCLOAK-1028 Make sure we return invalid response with response_type is token 2015-03-17 08:55:20 +01:00
Stian Thorgersen 2d785b5d5e KEYCLOAK-1050 Added support for selecting multiple values 2015-03-17 07:52:55 +01:00
Stian Thorgersen 2f6ae96aec Updated token endpoint in broker tests 2015-03-17 07:22:16 +01:00
Bill Burke 4a8f34f27f Merge pull request #1052 from patriot1burke/master
set saml issuer
2015-03-16 16:18:36 -04:00
Bill Burke adb5f306c2 fix account mappers issue 2015-03-16 16:15:22 -04:00
Marek Posolda 7c72781cb1 Merge pull request #1053 from mposolda/master
KEYCLOAK-1094 Rename k_idp_hint to kc_idp_hint
2015-03-16 20:50:09 +01:00
Bill Burke de2aa8e676 javadoc fixes 2015-03-16 15:37:49 -04:00
mposolda b22cd6ddd7 Adding pom.xml to broker examples 2015-03-16 20:28:33 +01:00
mposolda 4da566ae4d KEYCLOAK-1094 Rename k_idp_hint to kc_idp_hint 2015-03-16 20:00:20 +01:00
Bill Burke 1715be2308 set saml issuer 2015-03-16 14:52:29 -04:00
Bill Burke 321041fccf Merge pull request #1050 from patriot1burke/master
saml broker SPSSO descriptor
2015-03-16 13:31:47 -04:00
Marek Posolda 90c4185ee1 Merge pull request #1051 from mposolda/master
Fix Kerberos test on windows, KEYCLOAK-1092
2015-03-16 18:10:50 +01:00
Bill Burke 224066f0fd saml broker defaults and export page 2015-03-16 12:34:20 -04:00
mposolda a3c3a837ad Fix Kerberos tests on windows - another attempt 2015-03-16 17:05:19 +01:00
mposolda 5fe0c38498 KEYCLOAK-1092 Fix test for crud of federated identity links 2015-03-16 16:49:01 +01:00
Bill Burke f13f0730db Merge remote-tracking branch 'upstream/master' 2015-03-16 10:03:15 -04:00
Marek Posolda cb17db50c1 Merge pull request #1049 from mposolda/master
Attempt to fix Kerberos.credentialDelegationTest on windows
2015-03-16 14:57:50 +01:00
mposolda 05fd3032ec Attempt to fix Kerberos.credentialDelegationTest on windows 2015-03-16 14:25:38 +01:00
Bill Burke ec1ba40f4a Merge remote-tracking branch 'upstream/master' 2015-03-16 09:22:55 -04:00
Stian Thorgersen 7ab0597989 Merge pull request #1048 from stianst/oidc
Change adapters to use auth and token endpoints
2015-03-16 10:28:06 +01:00
Stian Thorgersen e2b02d414f Change adapters to use auth and token endpoints 2015-03-16 09:23:12 +01:00
Stian Thorgersen 3d05f31202 Merge pull request #1047 from gerbermichi/i18n
[KEYCLOAK-301] Internationalization support
2015-03-16 09:17:16 +01:00
Michael Gerber 144ee2c56d add localization support to realm
(cherry picked from commit b00764b)

add localization support to realm
(cherry picked from commit b00764b)

add localization support to realm
(cherry picked from commit b00764b)

admin gui for localization support
(cherry picked from commit c157cc3)

added locale support to ClassLoaderTheme and FolderTheme
(cherry picked from commit 764960a)

rename localizatin to internationalization
(cherry picked from commit 74a0658)

fallback if no message can be found
(cherry picked from commit 2d54e6f)

fallback if no message can be found
(cherry picked from commit 2d54e6f)

add HttpHeaders
(cherry picked from commit be921c8)

add HttpHeaders
(cherry picked from commit be921c8)

NPE fix
(cherry picked from commit 148158b)

improve locale helper
(cherry picked from commit 57a805a)

write cookie
fix npe
(cherry picked from commit 33398b3)

dropdown to choose language
(cherry picked from commit 9e2eb60)

added dropdown to choose locale to the account page.
fixed the path of the cookie.
(cherry picked from commit 871469a)

remove debug info
(cherry picked from commit c3ea6b1)

added dropdown to change locale for user.
(cherry picked from commit 1575bea)

add i18n for emails
(cherry picked from commit b6280e9)

i18n for emails
(cherry picked from commit 6118c51)

set default locale to english
(cherry picked from commit 386447b)

change locale type form String to Locale
(cherry picked from commit 8dcc595)

change file encoding
(cherry picked from commit 2cce96d)

added parameters to setSuccess, setWarning, setError
(cherry picked from commit 64ea438)

i18n for error messages
(cherry picked from commit e75d5ef)

i18n for error message in login
(cherry picked from commit 8b60c96)

add i18n for messages in account pages
(cherry picked from commit 9849d94)

fix unit test
(cherry picked from commit a70a1c7)

fix unit test
(cherry picked from commit 008744b)

locale localization :)
(cherry picked from commit f3a2144)

locale localization :)
(cherry picked from commit 21f6384)

messages refactoring
(cherry picked from commit 08f1ae7)

messages refactoring
(cherry picked from commit 3b4b53a)

messages refactoring
(cherry picked from commit 69146d4)

messages refactoring
(cherry picked from commit cd3db1d)

messages refactoring
(cherry picked from commit 715583f)

fix unit tests after message refactoring
(cherry picked from commit a82c9ff)

fix unit tests after message refactoring
(cherry picked from commit 5662d83)

fix unit tests after message refactoring
(cherry picked from commit 1188de6)

fix unit tests after message refactoring
(cherry picked from commit 90ded07)

German translations
(cherry picked from commit 9822b99)

removed newliines
(cherry picked from commit 34ca1d8)

removed java 8 dependency
(cherry picked from commit 3a23f4f)

typo
(cherry picked from commit a818122)

typo
(cherry picked from commit a818122)

forgotten properties

unit test fixes

unit test fixes

fixes after rebase

add localization support to realm
(cherry picked from commit b00764b)

add localization support to realm
(cherry picked from commit b00764b)

add localization support to realm
(cherry picked from commit b00764b)

admin gui for localization support
(cherry picked from commit c157cc3)

added locale support to ClassLoaderTheme and FolderTheme
(cherry picked from commit 764960a)

rename localizatin to internationalization
(cherry picked from commit 74a0658)

fallback if no message can be found
(cherry picked from commit 2d54e6f)

fallback if no message can be found
(cherry picked from commit 2d54e6f)

add HttpHeaders
(cherry picked from commit be921c8)

add HttpHeaders
(cherry picked from commit be921c8)

NPE fix
(cherry picked from commit 148158b)

improve locale helper
(cherry picked from commit 57a805a)

write cookie
fix npe
(cherry picked from commit 33398b3)

dropdown to choose language
(cherry picked from commit 9e2eb60)

added dropdown to choose locale to the account page.
fixed the path of the cookie.
(cherry picked from commit 871469a)

remove debug info
(cherry picked from commit c3ea6b1)

added dropdown to change locale for user.
(cherry picked from commit 1575bea)

add i18n for emails
(cherry picked from commit b6280e9)

i18n for emails
(cherry picked from commit 6118c51)

set default locale to english
(cherry picked from commit 386447b)

change locale type form String to Locale
(cherry picked from commit 8dcc595)

change file encoding
(cherry picked from commit 2cce96d)

added parameters to setSuccess, setWarning, setError
(cherry picked from commit 64ea438)

i18n for error messages
(cherry picked from commit e75d5ef)

i18n for error message in login
(cherry picked from commit 8b60c96)

add i18n for messages in account pages
(cherry picked from commit 9849d94)

fix unit test
(cherry picked from commit a70a1c7)

fix unit test
(cherry picked from commit 008744b)

locale localization :)
(cherry picked from commit f3a2144)

locale localization :)
(cherry picked from commit 21f6384)

messages refactoring
(cherry picked from commit 08f1ae7)

messages refactoring
(cherry picked from commit 3b4b53a)

messages refactoring
(cherry picked from commit 69146d4)

messages refactoring
(cherry picked from commit cd3db1d)

messages refactoring
(cherry picked from commit 715583f)

fix unit tests after message refactoring
(cherry picked from commit a82c9ff)

fix unit tests after message refactoring
(cherry picked from commit 5662d83)

fix unit tests after message refactoring
(cherry picked from commit 1188de6)

fix unit tests after message refactoring
(cherry picked from commit 90ded07)

German translations
(cherry picked from commit 9822b99)

removed newliines
(cherry picked from commit 34ca1d8)

removed java 8 dependency
(cherry picked from commit 3a23f4f)

typo
(cherry picked from commit a818122)

typo
(cherry picked from commit a818122)

forgotten properties

unit test fixes

unit test fixes

fixes after rebase

fixes after rebase

fixes after rebase

fixes after rebase
2015-03-14 14:08:06 +01:00
Bill Burke 60ecf99aa6 export saml broker SPSSO descriptor 2015-03-13 20:56:40 -04:00
Bill Burke 7f879fcf62 Merge pull request #1043 from jpkrohling/KEYCLOAK-1101-PasswordPolicyNotUsername
KEYCLOAK-1101 - Added notUsername() to password policy.
2015-03-13 16:58:44 -04:00
Marek Posolda f732332281 Merge pull request #1046 from mposolda/master
KEYCLOAK-1102 Used just one ResteasyClient in admin client
2015-03-13 20:22:06 +01:00
mposolda 9b74393add KEYCLOAK-1102 Used just one ResteasyClient in admin client 2015-03-13 19:56:05 +01:00
Marek Posolda d28f3ebaf9 Merge pull request #1045 from mposolda/master
KEYCLOAK-1099 Test of identity providers and protocol mappers import
2015-03-13 19:53:26 +01:00
mposolda 7d2d3230d2 KEYCLOAK-1099 Test of identity providers and protocol mappers import 2015-03-13 19:34:40 +01:00
Marek Posolda 29030a6d39 Merge pull request #1044 from mposolda/master
Fix kerberos test failing in some environments
2015-03-13 17:52:17 +01:00
mposolda 84eed9ffc6 Fix kerberos test failing in some environments 2015-03-13 17:17:09 +01:00
Juraci Paixão Kröhling a64ce244d5 KEYCLOAK-1101 - Added notUsername() to password policy. 2015-03-13 15:50:28 +01:00
Marek Posolda fbfe552b54 Merge pull request #1042 from mposolda/master
KEYCLOAK-1043 Fix fuse packaging due to bouncycastle update. Improve cam...
2015-03-13 11:18:33 +01:00
mposolda 444cdac9f5 KEYCLOAK-1043 Fix fuse packaging due to bouncycastle update. Improve camel example 2015-03-13 10:57:44 +01:00
Bill Burke 4b48988a73 update readme features 2015-03-12 18:13:05 -04:00
Bill Burke d8b34b68ec Merge pull request #1041 from patriot1burke/master
bump picketlink version
2015-03-12 18:09:42 -04:00
Bill Burke 6dd2959a38 bump picketlink version 2015-03-12 18:09:06 -04:00
Bill Burke 9b5b9e3275 Merge pull request #1040 from patriot1burke/master
bump liquibase LAST_VERSION
2015-03-12 16:55:28 -04:00
Bill Burke cc98a3dae0 bump liquibase LAST_VERSION 2015-03-12 16:55:04 -04:00
Bill Burke 0f23e1e31f Merge pull request #1039 from patriot1burke/master
KEYCLOAK-982
2015-03-12 16:54:50 -04:00
Bill Burke eeb47f9374 KEYCLOAK-982 2015-03-12 16:34:02 -04:00
Bill Burke 7d2a6237b0 Merge pull request #1034 from velias/KEYCLOAK-1074
#1074 - Allow registration with email as username
2015-03-12 15:36:05 -04:00
Vlastimil Elias 5b653b4e3e rebase 2015-03-12 15:57:14 +01:00
Vlastimil Elias 43aa61ace3 KEYCLOAK-1074
- field label changes on login page
- added all relevant integration tests
2015-03-12 15:45:41 +01:00
Vlastimil Elias 7fce4f1dd9 patched RepresentationToModel injured during reformating 2015-03-12 15:43:17 +01:00
Vlastimil Elias dec8d33af1 code formatting improved to keep only real changes done for
KEYCLOAK-1074
2015-03-12 15:43:16 +01:00
Vlastimil Elias c8c0449124 code formatting patched to be close to original and produce better difs 2015-03-12 15:39:31 +01:00
Vlastimil Elias 21b4f9a2f1 KEYCLOAK-1074 - Allow registration with email as username (without
username as separate field)
2015-03-12 15:31:19 +01:00
Vlastimil Elias aad1f3707e KEYCLOAK-1074
- field label changes on login page
- added all relevant integration tests
2015-03-12 15:04:25 +01:00
Stian Thorgersen d296d480e9 Merge pull request #1038 from stianst/oidc
OpenID Connect Discovery and single auth and token endpoints
2015-03-12 13:00:38 +01:00
Stian Thorgersen ffbb2df1f3 KEYCLOAK-571 OpenID Connect Discovery
KEYCLOAK-1091 JSON Web Key Set endpoint
KEYCLOAK-790 One OpenID Connect token endpoint URL
2015-03-12 11:45:13 +01:00
Marek Posolda f8010c21c9 Merge pull request #1037 from mposolda/master
Minor improvements for kerberos
2015-03-12 09:49:56 +01:00
mposolda c2f2c5ccb6 Minor improvements for kerberos 2015-03-12 09:12:16 +01:00
Bill Burke 0e0181ced4 Merge pull request #1036 from patriot1burke/master
validate destination
2015-03-11 20:03:21 -04:00
Bill Burke 9984caa2fe validate destination 2015-03-11 19:27:01 -04:00
Bill Burke 3af3dd78e5 Merge pull request #1035 from patriot1burke/master
clean and docs for mapper
2015-03-11 12:07:03 -04:00
Bill Burke 6450c4c5f3 cleanup and docs for mappers 2015-03-11 12:05:27 -04:00
Vlastimil Elias f64da6faa0 patched RepresentationToModel injured during reformating 2015-03-11 16:07:06 +01:00
Vlastimil Elias 4cd3827976 code formatting improved to keep only real changes done for
KEYCLOAK-1074
2015-03-11 15:38:42 +01:00
Bill Burke 451ce64907 role name mapper 2015-03-11 09:59:56 -04:00
Vlastimil Elias a49a2f1dc4 code formatting patched to be close to original and produce better difs 2015-03-11 09:50:21 +01:00
Vlastimil Elias b117409531 KEYCLOAK-1074 - Allow registration with email as username (without
username as separate field)
2015-03-10 16:28:57 +01:00
Marek Posolda 81f88539ff Merge pull request #1033 from mposolda/master
Minor fixes in kerberos example
2015-03-10 13:07:08 +01:00
mposolda 90c9d29a45 Minor fixes in kerberos example 2015-03-10 12:44:41 +01:00
Stian Thorgersen 453d29f188 Tweak to tests to pass on travis 2015-03-10 04:58:36 +01:00
Stian Thorgersen f6a2c23314 Tweaks to file provider 2015-03-10 04:42:20 +01:00
Stan Silvert b79160722c Update documentation for JSON File persistence of the model. 2015-03-10 04:42:20 +01:00
Stan Silvert cb4c2cc5e3 All tests now passing except broker tests and ImportExportTest. 2015-03-10 04:42:19 +01:00
Stan Silvert b1d341155d Fix AdminApiTest. Fix distribution. Try to prevent InMemoryModel leaks. 2015-03-10 04:42:19 +01:00
Stan Silvert e0f670768f Make 3 more tests pass. 2015-03-10 04:42:19 +01:00
Stan Silvert 72b3db2322 KEYCLOAK-1072 Implement file-based JSON storage of the model 2015-03-10 04:42:19 +01:00
Bill Burke bf27c22dd5 Merge pull request #1032 from patriot1burke/master
mapper fixes and tests
2015-03-09 21:33:38 -04:00
Bill Burke 28a5e61dff role mappers and testing 2015-03-09 21:03:35 -04:00
Bill Burke 5cf64546c8 Merge remote-tracking branch 'upstream/master' 2015-03-09 09:05:53 -04:00
Bill Burke cdf22669f4 test oidc mappers 2015-03-09 09:05:39 -04:00
Bill Burke 60313a310c saml mapper tests 2015-03-09 08:02:30 -04:00
Bill Burke d4468913dd hardcoded saml mappers 2015-03-09 07:55:20 -04:00
Stian Thorgersen 3bc1d2e124 Merge branch 'girirajsharma-master' 2015-03-09 11:50:49 +01:00
Stian Thorgersen 452931bfb8 Simplified setting to/from dates 2015-03-09 11:47:08 +01:00
girirajsharma d2188a3f55 Fixed Event Viewer pagination, date filter and added testcases. 2015-03-09 11:47:08 +01:00
girirajsharma ce33ce2485 [KEYCLOAK-1050] - Improve filtering in Event viewer in admin app. 2015-03-09 11:47:08 +01:00
Stian Thorgersen 6874933724 Merge pull request #1031 from stianst/master
Removed dep on wildfly-extensions in server-all
2015-03-09 11:46:54 +01:00
Stian Thorgersen 2f64b6aaad Removed dep on wildfly-extensions in server-all 2015-03-09 11:45:50 +01:00
Bill Burke 7ba0681731 saml role list test 2015-03-08 08:14:48 -04:00
Bill Burke 7bfd55c0de Merge pull request #1029 from patriot1burke/master
saml role list mapper
2015-03-07 21:38:06 -05:00
Bill Burke 34cabf5bdb Merge remote-tracking branch 'upstream/master' 2015-03-07 19:47:45 -05:00
Bill Burke 5c6c30fef4 saml role list mapper 2015-03-07 19:47:34 -05:00
Bill Burke 868c54b614 Merge pull request #1027 from patriot1burke/master
added mappers, test saml mappers
2015-03-06 19:00:10 -05:00
Bill Burke 1de285b724 mappers 2015-03-06 18:42:20 -05:00
Bill Burke 4a4158a4e4 test saml attributes 2015-03-06 18:29:36 -05:00
Marek Posolda ff231f0d19 Merge pull request #1025 from mposolda/master
Minor enhancements in kerberos example
2015-03-06 19:47:19 +01:00
mposolda e7cc1c3e58 Minor enhancements in kerberos example 2015-03-06 18:39:08 +01:00
Marek Posolda b6b16c62f5 Merge pull request #1024 from mposolda/krb-deleg-cred
KEYCLOAK-1066 Kerberos credential delegation support
2015-03-06 13:22:56 +01:00
mposolda db07d79009 KEYCLOAK-1066 Kerberos credential delegation support 2015-03-06 12:59:29 +01:00
Stian Thorgersen 8cf31bd3f1 Updated docs to include deploying providers as modules 2015-03-06 07:13:15 +01:00
Stian Thorgersen 2b78a3bf4d Tweaks to tests that fail on travis 2015-03-06 06:35:15 +01:00
Stian Thorgersen 1f5fedb0b0 Module provider loader 2015-03-06 05:30:17 +01:00
Bill Burke db2c01caa9 more mappers 2015-03-05 19:55:53 -05:00
Bill Burke 42eed8145c Merge pull request #1023 from patriot1burke/master
add oauth mappers
2015-03-05 12:14:54 -05:00
Bill Burke 558277f66d Merge remote-tracking branch 'upstream/master' 2015-03-05 11:55:05 -05:00
Bill Burke 06c8bf0964 add oauth mappers 2015-03-05 11:54:51 -05:00
Stian Thorgersen 4cb3d51781 KEYCLOAK-1082
Make sure session is valid if keycloak.js is initialized with tokens
2015-03-05 07:42:31 +01:00
Bill Burke 8dea0d50ee Merge pull request #1021 from patriot1burke/master
fix reg formatting
2015-03-04 21:00:20 -05:00
Bill Burke 6cfbd59d80 fix reg formatting 2015-03-04 20:59:40 -05:00
Bill Burke 7c445cf983 Merge pull request #1020 from patriot1burke/master
ID Token mapping, fix IDToken.otherClaims
2015-03-04 20:42:21 -05:00
Bill Burke 98831ec05a fix other claims in IDToken 2015-03-04 20:27:06 -05:00
Bill Burke 453ef808cc ID token mapping 2015-03-04 18:39:10 -05:00
Bill Burke 049dafd3c9 Merge pull request #1019 from patriot1burke/master
fix error
2015-03-04 17:41:38 -05:00
Bill Burke 51e2507f5d fix error 2015-03-04 17:39:40 -05:00
Bill Burke 94c778f22f Merge pull request #1018 from patriot1burke/master
reg/account custom attributes
2015-03-04 17:29:03 -05:00
Bill Burke 94980fff29 merge conflicts 2015-03-04 17:27:44 -05:00
Bill Burke 33520e9fec reg/account custom attributes 2015-03-04 17:25:50 -05:00
Bill Burke 226b75e1c5 Merge pull request #1017 from patriot1burke/master
fix SAML examples
2015-03-04 10:38:39 -05:00
Bill Burke 5a37754b62 fix SAML examples 2015-03-04 10:38:06 -05:00
Stian Thorgersen fb745d1dae Removed reference to auth-server.war in appliance docs 2015-03-04 15:19:00 +01:00
Stian Thorgersen 6c7f35c509 KEYCLOAK-1014 Don't redirect to app after reset password or verify email if new browser session 2015-03-04 13:39:11 +01:00
Stian Thorgersen ad799058a6 Merge pull request #1016 from mstruk/master
Fix boolean type - was causing issues on some dbs i.e. PostgreSQL
2015-03-04 13:08:02 +01:00
Marko Strukelj 3d1db7dd91 Fix boolean type - was causing issues on some dbs i.e. PostgreSQL 2015-03-04 12:50:03 +01:00
Stian Thorgersen f907a749aa KEYCLOAK-1015 Allow configuring login timeout separate to login actions 2015-03-04 08:45:01 +01:00
Bill Burke d7860420d6 Merge pull request #1015 from patriot1burke/master
refactor mapper
2015-03-03 21:21:42 -05:00
Bill Burke b51766e86e Merge remote-tracking branch 'upstream/master' 2015-03-03 20:38:46 -05:00
Bill Burke 396e0c6171 refactor mappers 2015-03-03 20:38:28 -05:00
Bill Burke aee47a80bd Merge pull request #1011 from patriot1burke/master
fix mongo
2015-03-03 13:44:42 -05:00
Bill Burke 4430d8efac Merge remote-tracking branch 'upstream/master' 2015-03-03 12:02:54 -05:00
Bill Burke 608185f06a boolean mapper property types 2015-03-03 12:00:40 -05:00
Stian Thorgersen d74214cf56 Merge pull request #1014 from girirajsharma/master
[KEYCLOAK-1024] - Make sure docs point out password hashing iterations should be increased.
2015-03-03 13:03:11 +01:00
girirajsharma 634ae972c6 [KEYCLOAK-1024] - Make sure docs point out password hashing iterations
should be increased.
2015-03-03 14:30:52 +05:30
Bill Burke 0559c1df06 Merge remote-tracking branch 'upstream/master' 2015-03-02 21:40:01 -05:00
Bill Burke 753feae49e fixes 2015-03-02 21:39:43 -05:00
Marek Posolda eb43d0b779 Merge pull request #1013 from mposolda/krb-deleg-cred
Kerberos/SPNEGO login in SAML applications
2015-03-02 20:48:05 +01:00
mposolda 633696ab7d Kerberos/SPNEGO login in SAML applications 2015-03-02 20:28:04 +01:00
Marek Posolda 5c30093554 Merge pull request #1012 from girirajsharma/master
[KEYCLOAK-1026] - Application Settings tooltip copy/paste error.
2015-03-02 19:56:45 +01:00
girirajsharma 7dffe82118 [KEYCLOAK-1026] - Application Settings tooltip copy/paste error. 2015-03-02 23:56:09 +05:30
Bill Burke 5e12ee3e7a resolve conflicts 2015-03-02 09:00:10 -05:00
Bill Burke 6f88d50d4d fix mongo 2015-03-02 08:55:11 -05:00
Marek Posolda d1fbe1fd30 Merge pull request #1010 from mposolda/krb-deleg-cred
Configurable KDC encryption types, Mongo fix
2015-03-02 13:27:38 +01:00
mposolda 4741a9a91e Configurable kdc encryption types for Kerberos test 2015-03-02 12:56:13 +01:00
mposolda 58a7e549b2 Fix mongo to pass with testsuite 2015-03-02 12:07:31 +01:00
Bill Burke 80553e0dd8 Merge pull request #1009 from patriot1burke/master
mapper refactoring, default saml mappers
2015-03-01 00:20:59 -05:00
Bill Burke 4361ce1d42 mapper refactoring 2015-02-28 19:48:50 -05:00
Bill Burke 1684f00922 Merge pull request #1008 from patriot1burke/master
saml attribute mappers
2015-02-28 11:33:16 -05:00
Bill Burke f54da90d71 Merge remote-tracking branch 'upstream/master' 2015-02-28 11:17:19 -05:00
Bill Burke 2da925505e saml attribute mappers 2015-02-28 11:17:06 -05:00
Bill Burke 42b3bc1eea Merge pull request #1004 from girirajsharma/master
[KEYCLOAK-1058] - Can't choose again the same realm.
2015-02-27 21:22:43 -05:00
Bill Burke 2066a7ac89 Merge pull request #999 from velias/patch-1
Updated target java to 1.7 in parent pom.xml
2015-02-27 21:22:03 -05:00
Bill Burke 5a7ea3ba5d Merge pull request #1007 from patriot1burke/master
add saml mapper interfaces
2015-02-27 21:21:41 -05:00
Bill Burke 9dd9c9b37f add saml mapper interfaces 2015-02-27 20:16:34 -05:00
Bill Burke 724789e114 Merge pull request #1006 from patriot1burke/master
add mapper category and help text
2015-02-27 18:38:58 -05:00
Bill Burke 07b038e126 add mapper category and help text 2015-02-27 18:21:42 -05:00
Bill Burke ccb3a618b1 Merge pull request #1005 from patriot1burke/master
initial protocol mapper ui
2015-02-27 18:03:22 -05:00
Bill Burke 8533d49dfb Merge remote-tracking branch 'upstream/master' 2015-02-27 17:28:09 -05:00
Bill Burke 1c6e90c4ef protocol mapper ui 2015-02-27 17:21:02 -05:00
girirajsharma 7ea5d411d7 [KEYCLOAK-1058] - Can't choose again the same realm. 2015-02-27 19:32:03 +05:30
Marek Posolda ea98d26683 Merge pull request #1003 from mposolda/master
Kerberos documentation
2015-02-27 13:50:10 +01:00
mposolda aaf3c18a1b Kerberos documentation 2015-02-27 13:48:40 +01:00
Pedro Igor 663560a185 Merge pull request #1002 from pedroigor/master
[KEYCLOAK-883] - Configuration option to disable token retrieval from applications.
2015-02-27 02:13:49 -03:00
pedroigor b45d6b896a [KEYCLOAK-883] - Configuration option to disable token retrieval from applications. 2015-02-27 02:13:27 -03:00
Pedro Igor cd39d5292a Merge pull request #1001 from pedroigor/master
[KEYCLOAK-883] - Reverting change that redirects to error page when fede...
2015-02-26 15:27:56 -03:00
pedroigor 17653e7e74 [KEYCLOAK-883] - Reverting change that redirects to error page when federating identities.. 2015-02-26 15:27:32 -03:00
Pedro Igor 69da51cc56 Merge pull request #1000 from pedroigor/master
[KEYCLOAK-883] - Examples config and logging changes.
2015-02-26 12:34:47 -03:00
pedroigor 8f263a43e3 [KEYCLOAK-883] - Examples config and logging changes. 2015-02-26 12:34:33 -03:00
Vlastimil Eliáš 86b5f1b66c Updated target java to 1.7
Updated target java to 1.7 as Keycloak source codes are not compilable under java 1.6 due some core java classes (unknown constructor in AssertionError, bad visibility of method in InetAddress). 
This change eases import of Keycloak project into Eclipse also as Eclipse uses this maven property to set Java version for project. Without this change there are compilation errors in Eclipse after project import.
2015-02-26 10:26:07 +01:00
Pedro Igor bccffadc7c Merge pull request #998 from pedroigor/master
[KEYCLOAK-883] - Minor changes to the configuration of identity providers for clients.
2015-02-25 21:02:43 -03:00
pedroigor 6e38964838 [KEYCLOAK-883] - Minor changes to the configuration of identity providers for clients. 2015-02-25 21:00:49 -03:00
Marek Posolda 21992ddd31 Merge pull request #997 from mposolda/master
Kerberos fixes for jboss-modules refactoring. Fix environment specific t...
2015-02-25 23:35:50 +01:00
mposolda 0c893b6175 Kerberos fixes for jboss-modules refactoring. Fix environment specific test failures 2015-02-25 22:36:27 +01:00
Bill Burke 8d4d497063 Merge pull request #993 from patriot1burke/master
claim mappings next phase
2015-02-25 11:46:13 -05:00
Bill Burke 430daf4c39 Merge remote-tracking branch 'upstream/master' 2015-02-25 11:35:04 -05:00
Bill Burke 9f759ed77c rest interface for claim mapping 2015-02-25 11:34:51 -05:00
Stian Thorgersen 195a5dffdc Merge pull request #995 from stianst/master
KEYCLOAK-1017 Add server version to cached resources to prevent problems...
2015-02-25 16:15:11 +01:00
Pedro Igor b8e712e10b Merge pull request #996 from pedroigor/master
[KEYCLOAK-1036] - Revert.
2015-02-25 11:22:15 -03:00
pedroigor 128cd98ce2 [KEYCLOAK-1036] - Revert. 2015-02-25 11:21:56 -03:00
Stian Thorgersen 5a10bbc8ca KEYCLOAK-1017 Add server version to cached resources to prevent problems with browser cache 2015-02-25 15:03:01 +01:00
Stian Thorgersen 12dc159326 Merge pull request #994 from stianst/modules
KEYCLOAK-934 Extract dependencies into modules
2015-02-25 12:55:36 +01:00
Stian Thorgersen b6a512b494 KEYCLOAK-934 Extract dependencies into modules 2015-02-25 12:05:48 +01:00
Bill Burke 1704a6c643 Merge remote-tracking branch 'upstream/master' 2015-02-24 19:37:22 -05:00
Bill Burke c20ad93807 claim mappings next phase 2015-02-24 19:37:07 -05:00
Stian Thorgersen e0da63c985 Merge pull request #992 from girirajsharma/master
[KEYCLOAK-1049]-Inconsistent name for Type information in Event viewer.
2015-02-24 15:34:34 +01:00
girirajsharma 427d840441 [KEYCLOAK-1049]-Inconsistent name for Type information in Event viewer. 2015-02-24 19:43:01 +05:30
Stian Thorgersen 76d154b9ab Merge pull request #991 from girirajsharma/master
[KEYCLOAK-1030]-Unable to delete Password Policy.
2015-02-24 15:08:33 +01:00
girirajsharma 55190d7808 [KEYCLOAK-1030]-Unable to delete Password Policy. 2015-02-24 18:43:38 +05:30
Stian Thorgersen 0ad3c72c0a Merge pull request #982 from girirajsharma/master
[KEYCLOAK-1031]-Multiple accounts with the same email.
2015-02-24 13:35:15 +01:00
Bill Burke 40a865bf9f Merge pull request #990 from patriot1burke/master
ProviderFactory.postInit()
2015-02-23 13:02:05 -05:00
Bill Burke 6c5f35720a Merge remote-tracking branch 'upstream/master' 2015-02-23 12:12:08 -05:00
Bill Burke 100dbd5fd7 ProviderFactory.postInit() 2015-02-23 12:11:48 -05:00
Bill Burke 1a43309333 Merge pull request #989 from patriot1burke/master
provider events
2015-02-23 12:11:30 -05:00
girirajsharma f83f76b143 [KEYCLOAK-1031]-Multiple accounts with the same email. 2015-02-23 22:29:00 +05:30
Bill Burke d06b7a47ac Merge remote-tracking branch 'upstream/master' 2015-02-23 11:39:39 -05:00
Bill Burke 1dde3e1459 provider events 2015-02-23 11:39:24 -05:00
Marek Posolda 175b397eb2 Merge pull request #988 from mposolda/master
Kerberos automated tests, fixes
2015-02-23 17:30:37 +01:00
mposolda 4b6b48dc34 Increase MaxPermSize for tests 2015-02-23 17:05:10 +01:00
mposolda 9f8b59dfb6 Kerberos/LDAP fixes 2015-02-23 14:07:55 +01:00
mposolda 9dd5ecd464 Kerberos automated test 2015-02-23 13:13:34 +01:00
Bill Burke 58299d3373 Merge pull request #987 from patriot1burke/master
more claims work
2015-02-21 10:50:54 -05:00
Bill Burke 169e3a50be Merge remote-tracking branch 'upstream/master' 2015-02-21 10:30:05 -05:00
Bill Burke e9f0b8999e Merge remote-tracking branch 'upstream/master' 2015-02-21 10:28:27 -05:00
Bill Burke 1ee68bca5b Merge pull request #984 from patriot1burke/master
refactor for claims, fixed XSS bugs
2015-02-21 10:27:37 -05:00
Bill Burke 69582ee3be more claims work 2015-02-21 10:26:55 -05:00
Pedro Igor 463e33e232 Merge pull request #986 from pedroigor/master
[KEYCLOAK-994] - Identity broker documentation.
2015-02-20 23:09:52 -02:00
pedroigor 2d56c271af [KEYCLOAK-994] - Identity broker documentation. 2015-02-20 23:08:57 -02:00
Pedro Igor 4ed2383f72 Merge pull request #985 from pedroigor/master
Fixing twitter example config files.
2015-02-20 21:08:54 -02:00
pedroigor e61ed33469 Fixing twitter example config files. 2015-02-20 21:08:19 -02:00
Bill Burke 6d224745b2 dont display saml fieldset 2015-02-20 10:14:39 -05:00
Bill Burke 42ffe21f91 Merge remote-tracking branch 'upstream/master' 2015-02-20 09:23:18 -05:00
Bill Burke 20f12ea960 changes 2015-02-20 09:22:49 -05:00
Stian Thorgersen ef054670eb Merge pull request #978 from girirajsharma/master
Fixed a very minor breadcrumb label in user details(attributes) UI.
2015-02-19 08:27:02 +01:00
Marek Posolda beb3d80afa Merge pull request #981 from mposolda/master
KEYCLOAK-1041 Fix examples packaging
2015-02-18 18:00:41 +01:00
mposolda 8aa19fe8eb KEYCLOAK-1041 Fix examples packaging 2015-02-18 17:38:58 +01:00
Marek Posolda d7b48f9ae2 Merge pull request #980 from mposolda/master
Kerberos refactored to be federation provider. Support for Kerberos and ...
2015-02-18 17:24:33 +01:00
mposolda d8024b0c6c Kerberos refactored to be federation provider. Support for Kerberos and LDAP. Username/password authentication support with kerberos credentials.
First step - KerberosFederationProvider

Finished KerberosFederationProvider. Added support for username/password authentication with kerberos credentials

Added Kerberos UI to LDAPFederationProvider

Fixes
2015-02-18 17:19:15 +01:00
Pedro Igor 7e4aa09efc Merge pull request #979 from pedroigor/master
[KEYCLOAK-883] - Tipo for identity provider settings tab. Fixing directive name.
2015-02-18 14:00:17 -02:00
pedroigor 9541d22ac5 [KEYCLOAK-883] - Tipo for identity provider settings tab. Fixing directive name. 2015-02-18 13:59:49 -02:00
girirajsharma bb027a3123 Fixed a very minor breadcrumb label in user details(attributes) UI. 2015-02-18 19:01:48 +05:30
Marek Posolda 8f5010e71a Merge pull request #977 from mposolda/master
LDAP testing improvements. Support for embedded Kerberos server in testsuite
2015-02-16 12:12:55 +01:00
mposolda 4795059e15 Fix mongo model 2015-02-16 11:50:42 +01:00
mposolda 5da05aa62a LDAP testing improvements. Support for embedded Kerberos server in testsuite 2015-02-16 11:50:28 +01:00
Bill Burke 6097ecb53f Merge pull request #976 from patriot1burke/master
client to protocol mapping model
2015-02-15 19:50:56 -05:00
Bill Burke ebd9bae1ee client to protocol mapping model 2015-02-15 17:01:34 -05:00
Bill Burke 2fb97f058b claim support phase 2 2015-02-14 09:56:19 -05:00
Bill Burke 1b4b7ace8b Merge pull request #974 from girirajsharma/master
Minor changes : Fixed spell/grammatical errors in docbook.
2015-02-14 09:03:45 -05:00
girirajsharma 48b115a4bb Minor changes : Fixed spell/grammatical errors in docbook. 2015-02-14 15:37:25 +05:30
Bill Burke 955a615a22 Merge pull request #973 from patriot1burke/master
claim mapping phase 1
2015-02-13 21:39:34 -05:00
Bill Burke 8586a8d1a5 Merge remote-tracking branch 'upstream/master' 2015-02-13 20:57:51 -05:00
Bill Burke c09b17c2e2 claim mapping phase 1 2015-02-13 20:57:38 -05:00
Marek Posolda 45375a9625 Merge pull request #971 from mposolda/master
Add authenticateByDefault flag to IdentityProviderModel. Automatic kerberos login
2015-02-13 10:25:46 +01:00
mposolda 3ef243dd42 Add authenticateByDefault flag to IdentityProviderModel 2015-02-13 10:08:51 +01:00
mposolda 205f7c5d6b Display error if linking account with kerberos is unsuccessful 2015-02-13 08:13:08 +01:00
Pedro Igor 2b7c7f63b6 Merge pull request #970 from pedroigor/master
[KEYCLOAK-883] - Code cleanup and refactoring.
2015-02-13 01:45:31 -02:00
pedroigor b0fb737de3 [KEYCLOAK-883] - Code cleanup and refactoring. 2015-02-13 01:27:11 -02:00
Bill Burke 7df5a832c9 fix dependency 2015-02-12 12:05:10 -05:00
Bill Burke ed286ba533 Merge pull request #964 from girirajsharma/master
Updated parent POM version for saml sub module in examples-pom module.
2015-02-11 22:13:35 -05:00
Bill Burke 4a1397afd8 Merge pull request #969 from patriot1burke/master
more saml config
2015-02-11 22:13:14 -05:00
Bill Burke 9b053e6918 more saml config 2015-02-11 21:56:16 -05:00
Bill Burke 889fe8dd8c Merge remote-tracking branch 'upstream/master' 2015-02-11 20:54:11 -05:00
Bill Burke 3ff423c3ad saml config 2015-02-11 20:54:01 -05:00
Marek Posolda a5c1e8e27b Merge pull request #968 from mposolda/master
Just display login with warning if Kerberos login failed
2015-02-11 19:12:04 +01:00
mposolda eed54d6198 Just display login with warning if Kerberos login failed 2015-02-11 19:11:03 +01:00
Marek Posolda e63900dac9 Merge pull request #967 from mposolda/master
KEYCLOAK-1037 Bad error message on login form in case of expired code
2015-02-11 18:49:51 +01:00
mposolda 534187f4d7 KEYCLOAK-1037 Bad error message on login form in case of expired code 2015-02-11 18:48:32 +01:00
Marek Posolda 37a8e295bd Merge pull request #966 from mposolda/master
Kerberos broker fixes
2015-02-11 13:13:42 +01:00
mposolda 03d607b022 Fix showing federation links of users in admin console 2015-02-11 13:03:31 +01:00
mposolda 4b637036ac Display error page if kerberos token is unavailable 2015-02-11 12:25:20 +01:00
mposolda 07bda93b81 Support for both SPNEGO and Kerberos mechanisms. Improved logging 2015-02-11 12:25:20 +01:00
girirajsharma c7560cec71 Updated parent POM version for saml sub module in examples-pom module. 2015-02-11 04:53:18 +05:30
Bill Burke 40f2fb91bc Merge pull request #960 from girirajsharma/master
Updated BC provider versions and deprecated CertificateUtil methods.
2015-02-10 17:55:45 -05:00
Bill Burke 988dcfc83d Merge pull request #963 from patriot1burke/master
saml url configuration
2015-02-10 17:55:20 -05:00
Bill Burke 36282d24b5 Merge remote-tracking branch 'upstream/master' 2015-02-10 11:33:33 -05:00
Bill Burke 0e9fcf19e0 saml url support 2015-02-10 11:33:18 -05:00
Marek Posolda 35628174b0 Merge pull request #962 from mposolda/master
KEYCLOAK-1036 Don't allow registration through identity brokering in cas...
2015-02-10 17:05:53 +01:00
mposolda f582250b31 KEYCLOAK-1036 Don't allow registration through identity brokering in case that realm registration is disabled 2015-02-10 16:57:07 +01:00
Pedro Igor 32aa6cdf9b Merge pull request #961 from pedroigor/master
[KEYCLOAK-883] - SAML Brokering Example.
2015-02-10 12:55:10 -02:00
pedroigor 49c3a6308e [KEYCLOAK-883] - SAML Brokering Example. 2015-02-10 12:54:16 -02:00
girirajsharma c3d7ef8066 Updated BC provider versions and deprecated CertificateUtil methods. 2015-02-10 18:44:54 +05:30
Marek Posolda 0b67437fa7 Merge pull request #959 from mposolda/master
KEYCLOAK-1035 Brokered identity linked by account management may not be recognized during login
2015-02-10 13:55:40 +01:00
mposolda 90496f62ac KEYCLOAK-1035 Brokered identity linked by account management may not be recognized during login 2015-02-10 13:54:45 +01:00
mposolda d59a28f1cb Added test for import kerberos model 2015-02-10 13:54:45 +01:00
Marek Posolda b2c0b90d07 Merge pull request #958 from mposolda/master
Kerberos broker - step 1
2015-02-10 09:53:35 +01:00
mposolda 0c2795cf7c KEYCLOAK-828 SPNEGO/Kerberos broker - step 1 2015-02-10 09:50:07 +01:00
mposolda d1c4d9795b Mongo fix 2015-02-10 09:50:07 +01:00
mposolda d523d7f202 Ensure timestamp on clientSession is updated in AccountService when linking identity broker 2015-02-10 09:49:44 +01:00
Pedro Igor 988832e388 Merge pull request #957 from pedroigor/master
[KEYCLOAK-883] - Twitter example.
2015-02-09 21:34:37 -02:00
pedroigor 735b031f26 [KEYCLOAK-883] - Twitter example. 2015-02-09 21:34:10 -02:00
Pedro Igor e84ae5e68d Merge pull request #956 from pedroigor/master
[KEYCLOAK-992] - Storing twitter tokens.
2015-02-09 21:31:56 -02:00
pedroigor 02e9c87fa4 [KEYCLOAK-992] - Storing twitter tokens. 2015-02-09 21:31:16 -02:00
Pedro Igor 36079fc6e6 Merge pull request #955 from pedroigor/master
[KEYCLOAK-883] - Refactoring to services endpoints and exposing them through admin client.
2015-02-09 21:30:42 -02:00
pedroigor ff1f10d7a7 [KEYCLOAK-883] - Refactoring to services endpoints and exposing them through admin client. 2015-02-09 21:30:21 -02:00
Pedro Igor 98c75f162a Merge pull request #954 from pedroigor/master
[KEYCLOAK-992] - More examples. Improving client code.
2015-02-08 22:04:15 -02:00
pedroigor fc4fee1253 [KEYCLOAK-992] - More examples. Improving client code. 2015-02-08 22:02:35 -02:00
Pedro Igor 5a9fcff0fd Merge pull request #953 from pedroigor/master
[KEYCLOAK-883] - Idp hint should be processed firts.
2015-02-08 22:01:59 -02:00
pedroigor cb72fa4788 [KEYCLOAK-883] - Idp hint should be processed firts. 2015-02-08 22:01:30 -02:00
Pedro Igor 916ba57c40 Merge pull request #952 from pedroigor/master
[KEYCKOAK-883] - Adding idpHint config option when configuring login url.
2015-02-08 20:53:29 -02:00
pedroigor 4ce2e76a2d [KEYCKOAK-883] - Adding idpHint config option when configuring login url. 2015-02-08 20:52:44 -02:00
pedroigor 98d8de00d4 [KEYCLOAK-992] - Removing my app credentials. 2015-02-08 03:37:22 -02:00
pedroigor 2c56daf6fd Merge branch 'master' of github.com:keycloak/keycloak 2015-02-08 03:35:21 -02:00
Pedro Igor 670ef4f820 Merge pull request #951 from pedroigor/KEYCLOAK-992
[KEYCLOAK-992] - Initial code for examples. Fixing cors when retreiving tokens.
2015-02-08 03:30:00 -02:00
pedroigor d6c49c4452 [KEYCLOAK-992] - Initial code for examples. Fixing cors when retreiving tokens. 2015-02-08 03:28:37 -02:00
pedroigor 1e13254598 [KEYCLOAK-992] - Initial code for examples. Fixing cors when retreiving tokens. 2015-02-08 03:27:57 -02:00
Pedro Igor e11ebe9971 Merge pull request #950 from pedroigor/KEYCLOAK-992
[KEYCLOAK-992] - Token retrieval from brokered idps.
2015-02-07 00:08:10 -02:00
pedroigor 4b1ba704ec [KEYCLOAK-992] - Token retrieval from brokered idps. 2015-02-06 22:23:34 -02:00
Pedro Igor 9b6254399d Merge pull request #948 from pedroigor/master
[KEYCLOAK-883] - Fixing alias update.
2015-02-06 16:28:21 -02:00
pedroigor 47f8f44347 [KEYCLOAK-883] - Fixing alias update. 2015-02-06 16:03:47 -02:00
Marek Posolda dae6055d85 Merge pull request #949 from mposolda/master
KEYCLOAK-1025 Skip automatic logout from KC admin console for non-author...
2015-02-06 18:54:41 +01:00
mposolda 8b4e724aeb KEYCLOAK-1025 Skip automatic logout from KC admin console for non-authorized users 2015-02-06 18:13:17 +01:00
Bill Burke 9a9f2a17a5 Merge pull request #947 from patriot1burke/master
frontchannel docs
2015-02-06 09:28:25 -05:00
Bill Burke 2a662ad2a6 frontchannel docs 2015-02-06 09:28:00 -05:00
Bill Burke 716d7f6606 Merge pull request #946 from patriot1burke/master
console front channel logout switch
2015-02-06 09:25:00 -05:00
Bill Burke c94e868c63 console front channel logout switch 2015-02-06 09:24:34 -05:00
Stian Thorgersen 27d4a33226 Merge branch 'girirajsharma-master' 2015-02-04 09:03:02 +01:00
Stian Thorgersen 56579fe0f6 Changed syslog event listener id 2015-02-04 09:02:48 +01:00
Stian Thorgersen d44f9446a2 Merge branch 'master' of https://github.com/girirajsharma/keycloak into girirajsharma-master 2015-02-04 09:00:22 +01:00
Marek Posolda 9a1e080025 Merge pull request #944 from EricWittmann/typo-fix-1
fixed a very minor tooltip typo
2015-02-03 22:40:38 +01:00
girirajsharma 30a36498c9 Provided sys-logging provider to enable keycloak events remote logging. 2015-02-04 02:03:57 +05:30
Eric Wittmann c9d7ed5df6 fixed a very minor tooltip typo 2015-02-03 11:59:49 -05:00
mposolda 1d8ebd441d KEYCLOAK-1023 Improve osgi packaging for hawtio. Fix typos in fuse example docs. 2015-02-02 23:25:56 +01:00
Stian Thorgersen 31f399e52a Merge pull request #943 from srose/KEYCLOAK-1020-a
KEYCLOAK-1020, minimal change
2015-02-02 09:23:10 +01:00
Sebastian Rose 0fccac1c68 KEYCLOAK-1020, minimal change 2015-01-31 17:29:36 +01:00
Pedro Igor 1375d50a47 Merge pull request #942 from pedroigor/KEYCLOAK-993
[KEYCLOAK-993] - Set requested scope for social providers.
2015-01-30 16:23:04 -02:00
pedroigor fcc7afcd26 [KEYCLOAK-993] - Set requested scope for social providers. 2015-01-30 16:05:08 -02:00
Pedro Igor e452165c4a Merge pull request #941 from pedroigor/KEYCLOAK-996
[KEYCLOAK-996] - Allow application to select provider.
2015-01-30 14:28:50 -02:00
pedroigor 99a457c5c1 [KEYCLOAK-996] - Allow application to select provider. 2015-01-30 14:02:53 -02:00
Stian Thorgersen 4dfb4a91ea KEYCLOAK-1018 Update JS adapter to use protocol/openid-connect urls 2015-01-30 14:29:58 +01:00
Stian Thorgersen 34fc92c0d3 Merge pull request #934 from girirajsharma/master
Fixed adding right CORS headers to actual and preflight CORS requests.
2015-01-30 14:02:29 +01:00
Stian Thorgersen 8c2ffeb601 Merge pull request #940 from stianst/master
KEYCLOAK-1019 Fix to keycloak.js if auth-server-url ends with '/'
2015-01-30 13:57:20 +01:00
Stian Thorgersen e2998a09b6 KEYCLOAK-1019 Fix to keycloak.js if auth-server-url ends with '/' 2015-01-30 10:02:27 +01:00
girirajsharma 2d6e1048ef Fixed adding right CORS headers to actual and preflight CORS requests. 2015-01-30 13:57:27 +05:30
Pedro Igor 0e344e6461 Merge pull request #939 from pedroigor/KEYCLOAK-883
[KEYCLOAK-883] - Tests.
2015-01-29 16:18:01 -02:00
pedroigor 5fae76c7e4 [KEYCLOAK-883] - Adding tests for update profile. Removing old social related classes. 2015-01-29 16:05:00 -02:00
pedroigor 8fc6368202 [KEYCLOAK-883] - OIDC brokering tests. 2015-01-29 11:57:24 -02:00
Pedro Igor f013796324 Merge pull request #938 from pedroigor/KEYCLOAK-883
[KEYCLOAK-883] - Initial tests for SAML brokering.
2015-01-29 09:11:39 -02:00
pedroigor 1960c608cd [KEYCLOAK-883] - Initial tests for SAML brokering. 2015-01-29 00:04:02 -02:00
Bill Burke b41be304e0 Merge pull request #937 from patriot1burke/master
saml frontchannel logout
2015-01-28 17:34:36 -05:00
Bill Burke fd20a25100 Merge remote-tracking branch 'upstream/master' 2015-01-28 17:09:59 -05:00
Bill Burke ea3bba98aa saml frontchannel logout 2015-01-28 17:09:13 -05:00
Stian Thorgersen 6400e9b978 Fix federation provider example to load users file from it's own ClassLoader instead of Thread CL 2015-01-28 13:23:13 +01:00
Stian Thorgersen 1a913b21c1 Updates to migration guide 2015-01-28 12:04:18 +01:00
Stian Thorgersen 6ecd9fbde7 Merge pull request #936 from stianst/master
Provider loaders
2015-01-28 11:51:05 +01:00
Stian Thorgersen eb695f12f7 KEYCLOAK-1000 Module provider loader 2015-01-28 11:26:46 +01:00
Stian Thorgersen c5bfaa6051 Added provider section to docs 2015-01-28 11:25:27 +01:00
Stian Thorgersen 67ba1de56f KEYCLOAK-999 Load providers from file-system 2015-01-28 09:15:07 +01:00
Pedro Igor 27956d6d2e Merge pull request #935 from pedroigor/KEYCLOAK-883
[KEYCLOAK-883] - Model tests.
2015-01-28 00:07:36 -02:00
pedroigor 2065815627 [KEYCLOAK-883] - Model tests. 2015-01-27 23:53:56 -02:00
Stian Thorgersen 15feb39ecc Update Travis CI config 2015-01-27 13:20:49 +01:00
Stian Thorgersen 594cc23a30 Add travis.yml 2015-01-27 08:51:04 +01:00
Stian Thorgersen 073b63de9e Clear time offset after tests 2015-01-27 08:51:04 +01:00
mposolda 920249b3e8 Fixed test failures caused by uncleared Time offset 2015-01-26 17:07:35 +01:00
Stian Thorgersen a36c651b10 Merge pull request #930 from pedroigor/KEYCLOAK-883
[KEYCLOAK-883] - Fixing addition of 2 providers of the same type.
2015-01-26 09:46:39 +01:00
Stian Thorgersen 7a7ca59685 Merge pull request #928 from pedroigor/KEYCLOAK-997
[KEYCLOAK-997] - Redirect directly to provider if password login is disa...
2015-01-26 08:48:08 +01:00
pedroigor 54c9efaf0d [KEYCLOAK-883] - Fixing addition of 2 providers of the same type. 2015-01-23 19:46:39 -02:00
pedroigor c2ba2a70ce [KEYCLOAK-997] - Redirect directly to provider if password login is disabled and there's only one provider. 2015-01-23 18:20:19 -02:00
mposolda ee4fbca868 Improve OOTB experience for ssh and jmx authentication in fuse 2015-01-23 20:57:40 +01:00
Stian Thorgersen 71b36ceb07 Merge pull request #927 from pedroigor/KEYCLOAK-986
[KEYCLOAK-986] - Escape characters when doing SAML POST Binding.
2015-01-23 15:12:01 +01:00
pedroigor edecda8599 [KEYCLOAK-986] - Escape characters when doing SAML POST Binding. 2015-01-23 12:09:44 -02:00
Marek Posolda 31de0112d8 Merge pull request #926 from mposolda/master
KEYCLOAK-1008 Mongo: Migrate social data from 1.1 database to identity f...
2015-01-23 13:02:50 +01:00
mposolda eaae4eb986 KEYCLOAK-1008 Mongo: Migrate social data from 1.1 database to identity federation data 2015-01-23 13:01:39 +01:00
Marek Posolda 3631635487 Merge pull request #925 from mposolda/master
Fix mongo model
2015-01-23 10:20:44 +01:00
mposolda a634f1a65f Fix mongo model 2015-01-23 10:19:06 +01:00
Stian Thorgersen 72b4790c4f Merge pull request #922 from pedroigor/KEYCLOAK-883
[KEYCLOAK-883] - More SAML configuration. Using SAML builders to create AuthnRequest.
2015-01-22 12:26:19 +01:00
Stian Thorgersen 7be2c9d15c Merge pull request #923 from pedroigor/KEYCLOAK-987
[KEYCLOAK-987] - IdP should respect the protocol binding when processing AuthnRequest.
2015-01-22 12:25:52 +01:00
pedroigor d1f38a4236 [KEYCLOAK-987] - IdP should respect the protocol binding when processing AuthnRequest. 2015-01-21 23:53:56 -02:00
pedroigor b9a7594113 [KEYCLOAK-883] - More SAML configuration. Using SAML builders to create AuthnRequest. 2015-01-21 23:40:20 -02:00
Marek Posolda da240b2b36 Merge pull request #920 from girirajsharma/master
Fixed KeyCloak relative URI optimization with auth-server-url in docbook
2015-01-21 17:13:26 +01:00
mposolda efb6ec8099 Added docs and example for SSH and JMX authentication on fuse 2015-01-21 13:43:38 +01:00
Stian Thorgersen f31bece1b9 KEYCLOAK-980 Password reset is possible with expired link 2015-01-21 13:11:06 +01:00
Stian Thorgersen e7a792f922 KEYCLOAK-983 Fix login after reset-password 2015-01-21 12:28:30 +01:00
mposolda 715482e371 Have fuse example working on newest fuse 6.2. Refactoring of ServletReregistrationService to work on fuse 6.1, 6.2 and karaf 3.0.2 2015-01-20 21:45:08 +01:00
girirajsharma 10c9b9b0b9 Updated KeyCloak relative URI as per scheme, host and port of request. 2015-01-21 01:27:42 +05:30
Bill Burke f454e5ae12 Merge pull request #921 from patriot1burke/master
logout via redirect - step 1
2015-01-20 10:57:04 -05:00
Bill Burke c5303df4fc merge 2015-01-20 10:55:04 -05:00
Bill Burke 24de9e932f ?? 2015-01-20 10:47:03 -05:00
girirajsharma 6088fddf94 Fixed KeyCloak relative URI optimization with auth-server-url in docbook 2015-01-20 20:21:59 +05:30
Stian Thorgersen c8d879a82d KEYCLOAK-977 Use reflection to find constructor for JBossGenericPrincipal to support EAP 6.4 2015-01-20 13:24:58 +01:00
mposolda f592e8b499 KEYCLOAK-981 Module org.picketlink.federation.bindings doesn't work with EAP6 2015-01-20 11:58:56 +01:00
mposolda 1119bb5b8b Fix SAML examples. Fix links in README files for SAML examples 2015-01-20 11:58:38 +01:00
Stian Thorgersen 40ec9da797 KEYCLOAK-975 Client/app secret should be read-only, not disabled 2015-01-19 14:08:14 +01:00
mposolda c0a928e6d0 Update instructions for fuse demo 2015-01-19 13:23:29 +01:00
Stian Thorgersen 981d50d082 Fix OAuthRedirectUriTest 2015-01-19 12:20:58 +01:00
Bill Burke 42bdb7731d Merge pull request #916 from jimmidyson/spring-boot-integration
Spring boot adapter
2015-01-16 19:01:04 -05:00
Bill Burke 8b6a3ad8e4 Merge remote-tracking branch 'upstream/master' 2015-01-16 18:58:01 -05:00
Bill Burke a0ba6d2c16 saml redirect logout 1st step 2015-01-16 18:57:33 -05:00
Bill Burke ef2698936b Merge pull request #919 from pedroigor/KEYCLOAK-884
[KEYCLOAK-884] - OpenID Connect UserInfo Endpoint.
2015-01-16 14:28:30 -05:00
pedroigor 4f432775ed [KEYCLOAK-884] - OpenID Connect UserInfo Endpoint. 2015-01-16 15:45:27 -02:00
mposolda 7be7001f4b Remove references about installing auth-server on JBoss AS 7.1.1 2015-01-16 18:02:31 +01:00
mposolda 2e04ac549e Make it easier to run demo on different host then auth-server 2015-01-16 18:02:23 +01:00
Jimmi Dyson 7483663194 Update Spring Boot documentation to show how to use Spring Boot keycloak
adapter with multiple security constraints.
2015-01-16 12:43:47 +00:00
Jimmi Dyson 81849ae631 Configure resource constraints via Spring Boot properties 2015-01-16 12:43:47 +00:00
Jimmi Dyson c4361e5695 Add documentation 2015-01-16 12:43:43 +00:00
Jimmi Dyson a5246b8075 Working external configuration through Spring Boot application.properties 2015-01-16 12:42:59 +00:00
Jimmi Dyson 273e945850 First stab - now just to make it configurable 2015-01-16 12:42:54 +00:00
Stian Thorgersen ef0201718f Fix OAuthRedirectUriTest 2015-01-16 13:22:12 +01:00
Stian Thorgersen cb91b862aa KEYCLOAK-967 Username is displayed as undefined in Cordova example 2015-01-16 13:22:12 +01:00
mposolda e4a8ced8b0 KEYCLOAK-974 ServerVersionResource doesn't handle cors requests 2015-01-16 12:57:08 +01:00
Stian Thorgersen a5b348dfba KEYCLOAK-964 JS Console has two tabs for Show ID Token 2015-01-16 11:27:33 +01:00
Stian Thorgersen 8828d6e2f1 KEYCLOAK-965 NPE in TokenManager.verifyAccess if application is deleted 2015-01-16 11:25:05 +01:00
Stian Thorgersen bf6c46da1c KEYCLOAK-962 Changed access token request to use redirect_uri from initial request instead of the resolved redirect_uri 2015-01-16 11:01:03 +01:00
Stian Thorgersen 768898a06e KEYCLOAK-963 Change code output to single-line for 'urn:ietf:wg:oauth:2.0:oob' 2015-01-16 10:16:08 +01:00
Marek Posolda ba0dc06252 Merge pull request #918 from mposolda/master
Fuse/Karaf adapter, demo example and documentation
2015-01-15 20:32:44 +01:00
mposolda 522e24017c Rebase with master 2015-01-15 20:29:34 +01:00
mposolda ad31b3dd2e Typo in packaging 2015-01-15 19:50:38 +01:00
mposolda 7faee110d5 KEYCLOAK-853 Documentation for login modules 2015-01-15 19:03:11 +01:00
mposolda aacbdf5748 Documentation for fuse adapter and example 2015-01-15 19:02:58 +01:00
mposolda d928c26e27 KEYCLOAK-539 Fuse adapter. OSGI bundling. OSGI headers in keycloak adapter maven artifacts. Rename package in jetty-core 2015-01-15 19:02:45 +01:00
Stian Thorgersen e4b7dd2df3 KEYCLOAK-960 Fix pagination of app sessions 2015-01-15 14:03:01 +01:00
Stian Thorgersen 7ccea2bd10 KEYCLOAK-958 Support role names with '/' and '\' 2015-01-15 12:22:14 +01:00
Stian Thorgersen 82a7471042 KEYCLOAK-959 Warning message in server log after logging out all sessions 2015-01-15 09:55:10 +01:00
Stian Thorgersen c3c6d4cbba Add redirect_uri to access token request in keycloak.js 2015-01-14 15:18:22 +01:00
Stian Thorgersen b16845a09e KEYCLOAK-955 Fix AeroGear project integration example 2015-01-14 14:32:03 +01:00
Stian Thorgersen 29b8c2c924 KEYCLOAK-949 Disabled user with wrong credentials receive wrong error message 2015-01-14 10:10:53 +01:00
Stian Thorgersen abd5967be3 KEYCLOAK-957 Access Token Request does not verify redirect_uri 2015-01-14 09:59:21 +01:00
Michael Gerber 3be74cda30 check if email is null 2015-01-14 09:18:05 +01:00
Stian Thorgersen 25daf5c45e Merge pull request #915 from girirajsharma/master
Minor changes : Fixed spell/grammatical errors in docbook.
2015-01-14 09:13:03 +01:00
girirajsharma 7cf1161305 Minor changes : Fixed spell/grammatical errors in docbook. 2015-01-14 00:20:44 +05:30
Stian Thorgersen e796c11b64 Merge pull request #913 from pedroigor/KEYCLOAK-883
[KEYCLOAK-883] - Initial changes.
2015-01-13 15:16:17 +01:00
pedroigor fa2533ed11 [KEYCLOAK-883] - Initial changes. 2015-01-13 00:58:19 -02:00
Stian Thorgersen 959933a227 Version bump 2015-01-12 10:35:50 +01:00
Stian Thorgersen de566ec741 Merge pull request #912 from gerbermichi/login-hint
Pass login_hint param to Keycloak login page
2015-01-12 10:35:12 +01:00
Michael Gerber 9c484b9938 add test 2015-01-09 14:03:36 +01:00
Michael Gerber 7ce1502bc5 pass login_hint parameter to the keycloak login page 2015-01-09 11:58:44 +01:00
Marek Posolda 78d5b09b4b Merge pull request #911 from mposolda/master
Fix resolving of current hostname and logout bug
2015-01-08 11:44:08 +01:00
mposolda fff8ae9f8a KEYCLOAK-942 Incorrect condition in ResourceAdminManager could cause global logout 2015-01-08 11:09:11 +01:00
mposolda e62858cefd KEYCLOAK-900 Fix resolving of current hostname 2015-01-08 11:09:11 +01:00
Stian Thorgersen 526e25abc7 Fixes for commons-io dep issues in KeycloakServer 2015-01-08 09:53:43 +01:00
Bill Burke dc94fac9f5 Merge pull request #910 from patriot1burke/master
saml persistent and transient id support
2015-01-07 19:31:43 -05:00
Bill Burke 110783ff2f Merge remote-tracking branch 'upstream/master' 2015-01-07 19:23:47 -05:00
Bill Burke 795b1d2893 saml persistent and transient id support 2015-01-07 19:23:33 -05:00
Stian Thorgersen b7dae5c88f Fixes for regression introduced by KEYCLOAK-923 2015-01-07 14:54:18 +01:00
Stian Thorgersen 37d6a79205 Merge pull request #909 from pedroigor/master
[KEYCLOAK-928] - Validate duplicated emails when updating profile.
2015-01-07 14:20:02 +01:00
pedroigor c4892428ae [KEYCLOAK-928] - Validate duplicated emails when updating profile. 2015-01-07 11:09:40 -02:00
Stian Thorgersen 2b1ae89608 KEYCLOAK-933 expose-token setting not working - empty string returned instead of token 2015-01-07 12:58:42 +01:00
Bill Burke 2a7fc53300 Merge pull request #908 from patriot1burke/master
fix cached principal adapter
2015-01-06 15:57:56 -05:00
Marek Posolda f4c06b7cd0 Merge pull request #907 from mposolda/master
KEYCLOAK-929 Don't remove principal on session passivation
2015-01-06 19:57:32 +01:00
Bill Burke 0f4953dcd2 fix cached principal adapter 2015-01-06 13:47:02 -05:00
mposolda c7b0c4fb05 KEYCLOAK-929 Don't remove principal on session passivation 2015-01-06 19:44:07 +01:00
Stian Thorgersen 6aa0cb5e3d Merge pull request #906 from gerbermichi/email-event
add error event if mail can not be send
2015-01-06 13:45:30 +01:00
Michael Gerber 181c1c8b5b add error event if mail can not be send 2015-01-06 13:02:27 +01:00
Stian Thorgersen 74ba508e4a KEYCLOAK-918 Reverse proxy triggers NPE in undertow adapter 2015-01-06 10:14:57 +01:00
Stian Thorgersen 992455e273 KEYCLOAK-923 Login redirect should support query param in keycloak.js 2015-01-06 09:56:03 +01:00
Stian Thorgersen 6c8013182b Merge branch 'gerbermichi-reset-password' 2015-01-05 14:34:57 +01:00
Stian Thorgersen 45a1f4361e Add test 2015-01-05 14:34:08 +01:00
Stian Thorgersen 39daeca09c Merge branch 'reset-password' of https://github.com/gerbermichi/keycloak into gerbermichi-reset-password 2015-01-05 14:26:51 +01:00
gerbermichi 0c73e67372 a disabled user should not receive an email to reset the password 2015-01-05 14:07:03 +01:00
Stian Thorgersen 628437c146 KEYCLOAK-760 OAuth2 refresh token expiration date 2015-01-05 10:50:50 +01:00
Stian Thorgersen 528196f786 Merge pull request #903 from gerbermichi/reset-password-email-feature
Add redirect URI to the reset password email web service
2015-01-05 08:59:19 +01:00
Michael Gerber ec1499cdf6 Merge remote-tracking branch 'upstream/master' into reset-password-email-feature 2015-01-02 14:11:51 +01:00
Michael Gerber 019bb558d1 reset-password-email with redirect_uri and client_id 2015-01-02 14:10:44 +01:00
Stian Thorgersen 6462da2c72 Merge pull request #902 from gerbermichi/reset-password-email-fix
fix reset-password-email
2015-01-02 13:51:08 +01:00
Stian Thorgersen d1119a1c26 KEYCLOAK-830
RestEasy client proxy NullPointerException with Keycloak
2015-01-02 12:52:39 +01:00
Michael Gerber 53e18b3ebe fix reset-password-email 2015-01-02 12:52:21 +01:00
Stian Thorgersen f97b71c207 KEYCLOAK-903
No client session for direct grant
2014-12-30 13:28:08 +01:00
Stian Thorgersen a367473386 KEYCLOAK-902 State should not be required 2014-12-30 10:38:08 +01:00
Stian Thorgersen f157dd7915 Updated instructions to test on PostgreSQL 2014-12-30 10:05:27 +01:00
Stian Thorgersen 2eb2ec50e3 KEYCLOAK-885 Support Liquibase updateSQL 2014-12-29 14:40:00 +01:00
Stian Thorgersen 9d63482759 KEYCLOAK-869 Rename EventEntity time column to entity_time 2014-12-29 14:39:42 +01:00
Stian Thorgersen ebf85cf04b Add test to add/remove RequiredAction to UserTest 2014-12-29 08:56:23 +01:00
Bill Burke 3a9a7976fa Merge pull request #901 from patriot1burke/master
error page adapter support
2014-12-23 16:33:29 -05:00
Bill Burke ec9ce6ef2f error page adapter support 2014-12-23 16:33:08 -05:00
Bill Burke 30cfabb08d Merge pull request #900 from patriot1burke/master
update wildfly distro
2014-12-22 16:40:54 -05:00
Bill Burke a280c11897 update wildfly distro 2014-12-22 16:40:29 -05:00
Bill Burke 358f968429 Merge pull request #899 from patriot1burke/master
RESTEASY-901
2014-12-22 16:06:52 -05:00
Bill Burke e39ea2adaf remove redundant tests 2014-12-22 16:06:19 -05:00
Bill Burke 8a1b7e39af RESTEASY-901 2014-12-22 15:59:25 -05:00
Bill Burke af3efa547c Merge pull request #898 from gerbermichi/master
Fix the java.lang.NoClassDefFoundError: org/xnio/OptionMap error
2014-12-22 14:01:26 -05:00
Bill Burke fdbe5c879e Merge pull request #896 from ssilvert/fix-demo-readme
Fix demo readme.
2014-12-22 10:38:14 -05:00
Michael Gerber 3be930f6cf Not required authentication test cases 2014-12-21 15:32:36 +01:00
Michael Gerber bcbb658ae4 Not required authentication bugfix 2014-12-20 14:16:29 +01:00
Michael Gerber 512a68c5fa Not required authentication bugfix 2014-12-20 14:12:35 +01:00
gerbermichi 1eaafcd3d9 bugfix for excluded post rest services 2014-12-19 16:55:46 +01:00
gerbermichi 2a33b177d5 fix nio bug 2014-12-18 16:58:36 +01:00
gerbermichi 1cbf5a5d99 Merge remote-tracking branch 'upstream/master' 2014-12-18 07:54:23 +01:00
Bill Burke 28a56289d9 Merge pull request #897 from patriot1burke/master
saved requests
2014-12-17 22:29:46 -05:00
Bill Burke 08be04b337 saved requests 2014-12-17 22:29:18 -05:00
Bill Burke 519d051eb0 Merge pull request #895 from ssilvert/KEYCLOAK-880-props-in-subsys
KEYCLOAK-880 Fix use of ${..} props in subsystem XML
2014-12-17 16:08:12 -05:00
Stan Silvert fe10913780 Fix demo readme. 2014-12-17 15:55:32 -05:00
Stan Silvert 0082892f7c KEYCLOAK-880 Fix use of ${..} props in subsystem XML 2014-12-17 15:40:02 -05:00
Stian Thorgersen 3a9de56f9c KEYCLOAK-869 Time field in EventEntity should be escaped 2014-12-17 15:04:53 +01:00
Stian Thorgersen e174802b0d KEYCLOAK-825
Log out user sessions on password reset
2014-12-17 14:54:33 +01:00
Stian Thorgersen e42fe6fb23 KEYCLOAK-891 Create server info page on admin console 2014-12-17 13:24:47 +01:00
Stian Thorgersen 6cf42db584 KEYCLOAK-891 Create server info page on admin console 2014-12-17 13:21:31 +01:00
gerbermichi 2186fe32a9 Bugfix: Can not read keycloak-server.json if the path contains a space
https://issues.jboss.org/browse/KEYCLOAK-892
2014-12-17 12:32:06 +01:00
Stian Thorgersen 7886d2aecc Merge pull request #894 from stianst/master
KEYCLOAK-895 Document polyfillers for IE9 compatibility in keycloak.js
2014-12-17 12:16:21 +01:00
Stian Thorgersen 2030ab159d KEYCLOAK-895 Document polyfillers for IE9 compatibility in keycloak.js 2014-12-17 12:15:46 +01:00
Stian Thorgersen ee62f5b1a1 Merge pull request #891 from nilspreusker/ie9-compatibility
IE9 Compatibility
2014-12-17 10:56:14 +01:00
gerbermichi 0755cb6996 Bugfix: Can not read keycloak-server.json if the path contains a space
https://issues.jboss.org/browse/KEYCLOAK-892
2014-12-16 18:54:48 +01:00
gerbermichi 1650cb33c6 Merge remote-tracking branch 'upstream/master' 2014-12-16 18:50:52 +01:00
gerbermichi c34b3a8017 Bugfix: Can not read keycloak-server.json if the path contains a space
https://issues.jboss.org/browse/KEYCLOAK-892
2014-12-16 18:44:09 +01:00
Bill Burke 000a85fe99 Merge pull request #892 from patriot1burke/master
common eap code
2014-12-16 12:27:32 -05:00
Bill Burke 17a8a92bb3 common eap code 2014-12-16 12:26:56 -05:00
Nils Preusker ce1fd8eedc using JSON.stringify(...) and JSON.parse(...)
see
http://lists.jboss.org/pipermail/keycloak-user/2014-December/thread.html
#1355
2014-12-16 16:14:13 +01:00
Stian Thorgersen 919a4c661b Merge pull request #890 from stianst/master
KEYCLOAK-874
2014-12-16 15:31:33 +01:00
Stian Thorgersen cf11911f6b KEYCLOAK-874
keycloak-example-themes-dist:zip:1.1.0.Beta2 does not exist
2014-12-16 15:31:02 +01:00
Stian Thorgersen f620b04656 Merge pull request #888 from gerbermichi/master
Bugfix: Changed timezone to GMT so IE can store cookie
2014-12-16 14:38:08 +01:00
Marek Posolda a3f5ace895 Merge pull request #889 from mposolda/master
Minor improvements/fixes in documentation
2014-12-16 14:22:25 +01:00
mposolda fbe26e28f1 Minor improvements/fixes in documentation 2014-12-16 14:04:04 +01:00
Michael Gerber 9169a3df76 IE 11 does not store cookie because of wrong time zone
https://issues.jboss.org/browse/KEYCLOAK-875
2014-12-13 21:24:49 +01:00
Marek Posolda 5ee0827a84 Merge pull request #887 from mposolda/master
KEYCLOAK-879 Added missing transport element in clustering documentation
2014-12-12 12:20:06 +01:00
mposolda c4462c6de7 KEYCLOAK-879 Added missing transport element in clustering documentation 2014-12-12 12:19:24 +01:00
Bill Burke 4c6f1b6a60 Merge pull request #886 from patriot1burke/master
bump
2014-12-05 21:10:45 -05:00
Bill Burke 6c04e26376 bump 2014-12-05 21:09:38 -05:00
Bill Burke 2ba266c98a Merge pull request #885 from patriot1burke/master
bump version
2014-12-05 19:04:00 -05:00
Bill Burke c0059a875b bump version 2014-12-05 19:03:13 -05:00
Bill Burke 541f23e1bb Merge pull request #884 from patriot1burke/master
rm adapters from appliance/war-dist
2014-12-05 18:33:12 -05:00
Bill Burke b768d593a2 rm adapters from appliance/war-dist 2014-12-05 18:30:41 -05:00
Bill Burke f5fe5c8d73 Merge pull request #883 from patriot1burke/master
proxy fixes
2014-12-05 17:47:14 -05:00
Bill Burke 2350baee14 Merge remote-tracking branch 'upstream/master' 2014-12-05 17:39:12 -05:00
Bill Burke 38073d2aaa fix proxy 2014-12-05 17:38:56 -05:00
Bill Burke 78be1280d3 Merge pull request #880 from ssilvert/master
Restore old AS7 subsystem
2014-12-04 19:25:22 -05:00
Stan Silvert 952436f129 Restore old AS7 subystem. 2014-12-04 14:53:50 -05:00
Stan Silvert a3002cfee6 Remove keycloak subsystem from AS7 dist. 2014-12-04 14:53:49 -05:00
Bill Burke 85ee8f2d43 Merge pull request #882 from patriot1burke/master
bump undertow version
2014-12-04 10:18:46 -05:00
Bill Burke e94f7ca741 bump undertow version 2014-12-04 10:18:16 -05:00
Stian Thorgersen 7de0c8f78b Merge pull request #881 from rexorient/master
Added CORS preflight support for realms/<realm>/tokens/refresh
2014-12-03 08:39:29 +01:00
apenders f3adf02eea Added CORS preflight support for realms/<realm>/tokens/refresh 2014-12-02 15:33:15 -07:00
Marek Posolda f240b60d4b Merge pull request #879 from mposolda/master
Fix osgi packaging
2014-12-02 21:34:25 +01:00
mposolda cd8bee8e29 Fix osgi packaging 2014-12-02 21:33:22 +01:00
Bill Burke 2195c35c70 Merge pull request #878 from patriot1burke/master
adapter testsuite port
2014-12-02 14:39:58 -05:00
Bill Burke 090162ce8a Merge remote-tracking branch 'upstream/master' 2014-12-02 14:38:57 -05:00
Bill Burke 82c3e4c1bc adapter testsuite port and adapter fixes 2014-12-02 14:38:33 -05:00
Marek Posolda e963f7c905 Merge pull request #877 from mposolda/master
Fix eap63 distribution and docker-cluster tool
2014-12-02 20:31:03 +01:00
mposolda 2802ad4ad5 Fix eap63 distribution and docker-cluster tool 2014-12-02 20:28:27 +01:00
Marek Posolda 8eed641f79 Merge pull request #876 from mposolda/master
KEYCLOAK-863 Osgi packaging for karaf/fuse
2014-12-01 15:12:59 +01:00
mposolda bfab7361f4 KEYCLOAK-863 Osgi packaging for karaf/fuse 2014-12-01 15:10:19 +01:00
Stian Thorgersen 4afcbc0610 Merge branch 'objectiser-RTGOV-620' 2014-12-01 13:47:33 +01:00
Stian Thorgersen e069f303a4 Added full scope to app in JaxrsBasicAuthTest 2014-12-01 13:39:19 +01:00
objectiser 8e01f8ecf1 KEYCLOAK-861 Support basic authentication against user credentials managed by KeyCloak. 2014-12-01 11:43:19 +00:00
Marek Posolda 3e8495f435 Merge pull request #875 from mposolda/master
Allow login modules to be more flexible
2014-11-28 20:08:41 +01:00
mposolda c5d000cefc Allow login modules to be more flexible 2014-11-28 20:06:18 +01:00
Stian Thorgersen 5c2e7df7de Merge pull request #873 from stianst/master
Use HmacSHA256 for code signatures
2014-11-27 10:34:51 +01:00
Stian Thorgersen c1360270d0 Ignore ProxyTest 2014-11-27 10:33:54 +01:00
Stian Thorgersen a843e31c12 KEYCLOAK-862 Use HmacSHA256 for code signatures 2014-11-27 10:02:08 +01:00
Stian Thorgersen 6b3e7c76bd Merge pull request #870 from ssilvert/eap-subsys
KEYCLOAK-856 Merge WildFly and EAP subsystems
2014-11-27 10:02:01 +01:00
Bill Burke fde8316693 Merge pull request #872 from patriot1burke/master
proxy headers
2014-11-25 15:14:01 -05:00
Bill Burke 7d4f28f52d proxy headers 2014-11-25 15:13:11 -05:00
Bill Burke 8c451af3f5 Merge pull request #871 from patriot1burke/master
proxy distro and docs
2014-11-24 19:22:44 -05:00
Bill Burke e14c5adf55 Merge remote-tracking branch 'upstream/master' 2014-11-24 19:16:34 -05:00
Bill Burke cdd751a38b proxy docs 2014-11-24 19:16:20 -05:00
Bill Burke d7dfacabfa proxy testing 2014-11-24 18:31:05 -05:00
Bill Burke d0856e024f proxy distro 2014-11-24 18:12:17 -05:00
Stan Silvert 0e58378489 KEYCLOAK-856 Update docs 2014-11-24 17:22:22 -05:00
Stan Silvert d53b01eb2b KEYCLOAK-856 Rename wildfly-subsystem to keycloak-subsystem 2014-11-24 16:52:16 -05:00
Marek Posolda ba9c3c9142 Merge pull request #869 from mposolda/master
KEYCLOAK-859 Added DirectAccessGrantsLoginModule
2014-11-24 19:08:53 +01:00
mposolda 2a78d0d4d0 KEYCLOAK-859 Added DirectAccessGrantsLoginModule 2014-11-24 18:56:51 +01:00
Stan Silvert 34e18c176d KEYCLOAK-856 Remove EAP subsystem 2014-11-23 09:35:19 -05:00
Bill Burke a6f231abbf Merge pull request #868 from patriot1burke/master
proxy config
2014-11-21 18:53:23 -05:00
Bill Burke 4bad1fea86 Merge remote-tracking branch 'upstream/master' 2014-11-21 18:45:02 -05:00
Bill Burke bc6e7c249b proxy config 2 2014-11-21 18:44:39 -05:00
Marek Posolda 21eb40e2c2 Merge pull request #867 from mposolda/master
KEYCLOAK-858 avoid creating inner DeploymentDelegate for each request
2014-11-21 23:50:20 +01:00
mposolda f1378a6092 KEYCLOAK-858 avoid creating inner DeploymentDelegate for each request 2014-11-21 23:49:29 +01:00
Marek Posolda e0d884ac1a Merge pull request #866 from mposolda/master
KEYCLOAK-857 add getter/setter for principalAttribute to AdapterDeployme...
2014-11-21 22:52:39 +01:00
mposolda 829f9f4386 KEYCLOAK-857 add getter/setter for principalAttribute to AdapterDeploymentContext 2014-11-21 22:51:22 +01:00
Stan Silvert f537661341 KEYCLOAK-856 Merge WildFly and EAP subsystems 2014-11-21 13:33:14 -05:00
Marek Posolda 8abbcca76b Merge pull request #865 from mposolda/master
Minor fixes in testsuite
2014-11-21 17:46:58 +01:00
mposolda e3e47a9246 Fix location of Tomcat6 home to be inside target 2014-11-21 17:34:30 +01:00
mposolda 96d430cd7e Fix CookieTokenStoreAdapterTest sometimes failing 2014-11-21 17:34:30 +01:00
Bill Burke b53707a129 Merge pull request #864 from patriot1burke/master
proxy constraints
2014-11-21 11:21:23 -05:00
Bill Burke 3a95401086 proxy constraints 2014-11-21 11:20:47 -05:00
Bill Burke 0143d71728 Merge pull request #863 from patriot1burke/master
proxy
2014-11-20 21:55:49 -05:00
Bill Burke 21279fc9ed proxy 2014-11-20 21:48:59 -05:00
Stian Thorgersen 0327bc0d5a Merge pull request #862 from stianst/master
KEYCLOAK-791 Denial of Service by invalid character injection
2014-11-18 14:59:01 +01:00
Stian Thorgersen ed1073ca92 KEYCLOAK-791 Denial of Service by invalid character injection 2014-11-18 14:58:20 +01:00
Bill Burke ca946d4b19 Merge pull request #860 from carljmosca/master
added support for Tivoli LDAP unique identifier
2014-11-17 10:52:50 -05:00
Bill Burke 7244e2f173 Merge pull request #859 from patriot1burke/master
tomcat6
2014-11-15 12:00:18 -05:00
Bill Burke 5be045c42b tomcat6 2014-11-15 11:59:33 -05:00
Marek Posolda a991ccf909 Merge pull request #858 from mposolda/master
Fixes to login module
2014-11-15 00:14:57 +01:00
mposolda b08930961f Fixes to login module 2014-11-14 21:06:07 +01:00
Bill Burke e01c634ed7 Merge remote-tracking branch 'upstream/master' 2014-11-14 09:20:17 -05:00
Bill Burke 46983d68f3 move ServerCookie to core 2014-11-14 09:20:03 -05:00
Marek Posolda 4ebca3ca43 Merge pull request #857 from mposolda/master
KEYCLOAK-853 Added jaas login module BearerTokenLoginModule
2014-11-14 13:40:58 +01:00
mposolda 68bff44b2e KEYCLOAK-853 Added jaas login module BearerTokenLoginModule 2014-11-14 13:40:12 +01:00
Carl J. Mosca aedbb8eb87 added support for Tivoli LDAP unique identifier 2014-11-13 16:17:40 -05:00
Bill Burke 41c6aacce8 Merge pull request #856 from patriot1burke/master
tomcat 8
2014-11-12 19:04:04 -05:00
Bill Burke a65560c5e6 tomcat8 2014-11-12 19:03:22 -05:00
Bill Burke e2045907d4 tomcat8 2014-11-12 18:56:18 -05:00
Bill Burke f552057b06 Merge remote-tracking branch 'upstream/master' 2014-11-12 15:38:05 -05:00
Bill Burke 81dc076bae Merge pull request #855 from ssilvert/subsys-enhancements
KEYCLOAK-839 Auth Server overlay enhancements
2014-11-12 15:37:39 -05:00
Stan Silvert 67c0182a49 KEYCLOAK-839 Auth Server overlay enhancements 2014-11-12 13:39:39 -05:00
Stan Silvert c85a31be7f KEYCLOAK-839 Auth Server overlay enhancements 2014-11-12 13:39:38 -05:00
Bill Burke ac2b8af172 overview update 2014-11-12 11:00:48 -05:00
Bill Burke 8b515ae625 Merge pull request #854 from patriot1burke/master
jetty 8 support
2014-11-12 10:44:53 -05:00
Bill Burke 9a622a05b1 jetty 8 docs 2014-11-12 10:44:20 -05:00
Bill Burke eccb295076 fix jsps with bad import 2014-11-12 10:34:21 -05:00
Bill Burke dd8c40b0d8 last jetty8 stuff 2014-11-12 10:32:37 -05:00
Bill Burke 25740508b5 fix artifact 2014-11-12 10:08:42 -05:00
Bill Burke 7f23c0dff8 Merge pull request #853 from patriot1burke/master
fix JWS impl, fix contributor SAML PR
2014-11-11 22:10:10 -05:00
Bill Burke 5c6dd8e0c3 temp fix for contributor SAML PR 2014-11-11 22:09:38 -05:00
Bill Burke 3b347d5f52 Merge remote-tracking branch 'upstream/master' 2014-11-11 21:28:49 -05:00
Bill Burke 0636cd898f fix incorrect JWS implementation 2014-11-11 21:28:35 -05:00
Bill Burke 43cb52b319 Merge pull request #852 from eivim/master
Add SAML NameID Formats and include certificate in signature
2014-11-11 20:42:29 -05:00
Eivind Mikkelsen 24a2773524 Add SAML NameID Formats and include certificate in signature
The NameID Format in the AuthnRequest NameIDPolicy is now respected,
and support has been added for the following NameID Formats:

  - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
  - urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
  - urn:oasis:names:tc:SAML:2.0:nameid-format:transient

The persistent NameID format was previously used in all responses
and mapped to the principal's username. Now, unspecified is mapped
to the principal's username and used by default if no NameIDPolicy
is specified by the SP.

The persistent format requires generating a pseudo-random identifier
that must be generated by the IdP on first login and stored in the
user's profile. Persistent NameID Format is not yet implemented.

The certificate is now added to the signature to enable support for
integration with Service Providers where only the IdP's certificate
fingerprint is configured (e.g. Zendesk).
2014-11-12 01:24:51 +01:00
Marek Posolda 7f29d4c247 Merge pull request #851 from mposolda/pl-upgrade
PL upgrade to 2.7.0.CR2 and ldap improvements
2014-11-11 15:20:46 +01:00
mposolda 279a70bcb8 Fix failing tests 2014-11-11 15:17:32 +01:00
mposolda 2f0498bb7f KEYCLOAK-827 add entryDN as one of attributes, which can be mapped to username 2014-11-11 13:20:12 +01:00
mposolda 64e777a4f4 Upgrade to picketlink 2.7.0.CR2 and minor LDAP improvements 2014-11-11 12:58:49 +01:00
Bill Burke 3fd8cd66d6 Merge pull request #850 from patriot1burke/master
update readme
2014-11-10 17:11:29 -05:00
Bill Burke d72bcebdf0 update readme 2014-11-10 17:11:07 -05:00
Bill Burke 7e9dbce259 Merge pull request #849 from patriot1burke/master
jetty 8
2014-11-10 17:09:39 -05:00
Bill Burke 3b6f10913c merge 2014-11-10 17:09:00 -05:00
Bill Burke 3fbffc9d7d jetty 8 2014-11-10 16:59:31 -05:00
Marek Posolda b4e0a1e6f5 Merge pull request #848 from mposolda/fuse
KEYCLOAK-835 KEYCLOAK-836
2014-11-10 22:26:11 +01:00
mposolda 63198288df Add jetty modules to distribution 2014-11-10 22:16:20 +01:00
mposolda 07fd8ae9d7 KEYCLOAK-836 Added OsgiJaxrsBearerTokenFilterImpl to be used in fuse 2014-11-10 22:16:20 +01:00
mposolda a94ab5883d KEYCLOAK-835 Move AdapterConstants to different package 2014-11-10 22:16:20 +01:00
mposolda d1e819cef1 KEYCLOAK-836 Refactoring of JaxrsBearerTokenFilter to work with both resteasy and Apache CXF. Added test 2014-11-10 22:16:14 +01:00
Bill Burke ebb795af5a Merge pull request #847 from patriot1burke/master
Jetty 9.x adapters
2014-11-07 21:11:24 -05:00
Bill Burke b0a5161e6b final jetty stuff 2014-11-07 21:10:15 -05:00
Bill Burke 3805510e20 more jetty adapter 2014-11-07 18:34:53 -05:00
Bill Burke 31050e0580 Merge pull request #811 from ssilvert/deploy-auth-in-subsys
KEYCLOAK-795 Move Auth Server into Keycloak Subsystem
2014-11-06 17:57:19 -05:00
Bill Burke 2e9f1908f0 Merge pull request #846 from patriot1burke/master
document truststore classpath:
2014-11-06 17:46:21 -05:00
Bill Burke f12cd5fa09 document truststore classpath: 2014-11-06 17:46:01 -05:00
Bill Burke b487d6c836 Merge pull request #844 from Monezz/master
KEYCLOAK-829 Support loading keystore from classpath
2014-11-06 17:39:37 -05:00
Bill Burke 47ea0f5e23 Merge pull request #845 from patriot1burke/master
jetty adapter
2014-11-06 17:36:48 -05:00
Bill Burke d77f1f090f merge for jetty 2014-11-06 17:36:22 -05:00
Bill Burke 666851a44a Merge remote-tracking branch 'upstream/master' 2014-11-06 17:27:44 -05:00
Bill Burke cd25d7019b jetty adapter 2014-11-06 17:27:31 -05:00
Timon Veenstra 7c9e3f4555 KEYCLOAK-829 Adjustment to KetstoreUtil to support loading keystore from classpath 2014-11-06 21:43:49 +01:00
Marek Posolda c0f377c8c7 Merge pull request #841 from jpkrohling/JPK-KEYCLOAK-821
KEYCLOAK-821 - Support for comma-separated list of file names to import.
2014-11-06 20:32:31 +01:00
Stian Thorgersen 4a38b04e3e Merge pull request #843 from stianst/master
KEYCLOAK-824 Wrong digit shown in Invalid Password message
2014-11-06 13:08:42 +01:00
Stian Thorgersen 9343cf2aca KEYCLOAK-824 Wrong digit shown in Invalid Password message 2014-11-06 12:30:24 +01:00
Marek Posolda 3d70bae994 Merge pull request #842 from mposolda/master
KEYCLOAK-822 More mandatory fields in LDAP configuration in admin consol...
2014-11-05 17:20:31 +01:00
mposolda 8895d0b91e KEYCLOAK-822 More mandatory fields in LDAP configuration in admin console 2014-11-05 17:14:03 +01:00
Juraci Paixão Kröhling cd0ad70952 KEYCLOAK-821 - Support for comma-separated list of file names to import. 2014-11-05 17:04:17 +01:00
Stian Thorgersen 5041d6ed80 Merge pull request #840 from stianst/master
KEYCLOAK-820  Don't expose realm private key through admin endpoints
2014-11-05 15:35:32 +01:00
Stian Thorgersen e7625c2bb1 KEYCLOAK-820 Don't expose realm private key through admin endpoints 2014-11-05 15:34:56 +01:00
Stan Silvert 63712039e7 KEYCLOAK-795: Update CLI 2014-11-05 08:31:09 -05:00
Stan Silvert aa55a86ff6 KEYCLOAK-795 Update documentation. Add latest version of CLI to appliance
dist.
2014-11-05 08:31:08 -05:00
Stan Silvert e8e50d2d1c KEYCLOAK-795 Cleanup appliance dist. 2014-11-05 08:31:07 -05:00
Stan Silvert 3f75ebf029 KEYCLOAK-795 Move Auth Server into Keycloak Subsystem 2014-11-05 08:31:07 -05:00
Stan Silvert f9215e961d Incremental commit because I haven't done one in awhile. 2014-11-05 08:31:06 -05:00
Stan Silvert 4776582a6a Old experiment with keycloak-server.json embedded into standalone.xml 2014-11-05 08:31:05 -05:00
Stian Thorgersen 5091e07555 Fix label for certificate on realm-keys page 2014-11-05 13:57:27 +01:00
Stian Thorgersen 5943af79af Update pom for 'examples/demo-template/example-ear' to not deploy to repo 2014-11-05 13:54:14 +01:00
Stian Thorgersen 875e9ba513 Merge pull request #839 from jpkrohling/JPK-Wildfly-Adapter-Dist-Zip-Bug
KEYCLOAK-816 Removed undertow-adapter as dependency from wildfly-adapter-zip
2014-11-05 13:14:04 +01:00
Juraci Paixão Kröhling 8c8f82d0fd KEYCLOAK-816 - Removed undertow-adapter as dependency from wildfly-adapter-zip 2014-11-05 12:15:37 +01:00
Bill Burke 00167ee76a Merge pull request #838 from patriot1burke/master
doclet fix
2014-11-04 16:05:44 -05:00
Bill Burke 9c175bfb5d Merge remote-tracking branch 'upstream/master' 2014-11-04 15:55:47 -05:00
Bill Burke ede59a4441 fix jax-doclets 2014-11-04 15:55:33 -05:00
Stian Thorgersen e91129db92 Merge pull request #837 from stianst/master
Fixes
2014-11-04 16:00:54 +01:00
Stian Thorgersen ebf04c01c6 Fix version in pom for admin-client 2014-11-04 15:57:14 +01:00
Stian Thorgersen 797c2762c8 Fix for sybase 2014-11-04 14:47:51 +01:00
Stian Thorgersen cfb6fb3d06 Update to server-installation.xml 2014-11-04 14:31:07 +01:00
Stian Thorgersen a147136db0 Minor updates to admin-client and multi-tenant examples 2014-11-04 14:22:07 +01:00
Stian Thorgersen 7327423a03 Fix ResetPasswordTest 2014-11-04 13:05:50 +01:00
Stian Thorgersen 91529ef6fd Fix MultiTenancyTest 2014-11-04 13:05:44 +01:00
Stian Thorgersen 431fa29ef1 Use relative urls for multi-tenant example 2014-11-04 10:33:49 +01:00
Stian Thorgersen 1797f7e704 KEYCLOAK-814 Admin Client Example 2014-11-04 10:33:42 +01:00
Stian Thorgersen 0f8c073354 Version bump 2014-11-04 09:01:06 +01:00
Marek Posolda 61a538ba29 Merge pull request #836 from mposolda/master
Fix LDAP test for case-insensitive databases like MySQL
2014-11-03 21:40:45 +01:00
mposolda 9ae8d6aee1 Fix LDAP test for case-insensitive databases like MySQL 2014-11-03 21:35:12 +01:00
Marek Posolda 98852e2f3f Merge pull request #835 from mposolda/master
Docs for AS 7.1.1 and EAP 6.2 workaround
2014-11-03 17:11:47 +01:00
mposolda d997e73f2d Docs for AS 7.1.1 and EAP 6.2 workaround 2014-11-03 17:05:28 +01:00
Stian Thorgersen fd08a884ad Merge pull request #834 from ssilvert/KEYCLOAK-812-remove-confidential-transport
KEYCLOAK-812: Remove confidential transport from auth server web.xml and
2014-11-03 15:55:20 +01:00
Stan Silvert 6c02510b92 KEYCLOAK-812: Remove confidential transport from auth server we.xml and
documentation.
2014-11-03 09:36:55 -05:00
Marek Posolda 7408600f94 Merge pull request #833 from mposolda/master
Fix servlet logout on wildfly/undertow
2014-11-03 13:00:30 +01:00
mposolda 229391d48b Fix servlet logout on wildfly/undertow 2014-11-03 12:59:40 +01:00
Marek Posolda 187fbfaf03 Merge pull request #832 from mposolda/master
Multitenancy example working on AS 7.1.1
2014-11-03 10:44:25 +01:00
mposolda 28547b0620 Multitenancy example working on AS 7.1.1 2014-11-03 10:41:49 +01:00
Bill Burke 380f5dfb4e Merge pull request #831 from patriot1burke/master
principal token attribute mapping
2014-10-31 16:40:30 -04:00
Bill Burke 9c7e297118 principal token attribute mapping 2014-10-31 16:40:07 -04:00
Bill Burke ce94b7e9de Merge pull request #830 from patriot1burke/master
servlet logout fixes
2014-10-31 10:46:27 -04:00
Bill Burke f209476a1b merged 2014-10-31 10:45:35 -04:00
Bill Burke bd08643f6c Merge remote-tracking branch 'upstream/master' 2014-10-31 10:29:13 -04:00
Bill Burke a9770073b2 logout ffixes 2014-10-31 10:29:06 -04:00
Stian Thorgersen da5332608c Merge pull request #829 from stianst/master
KEYCLOAK-805 Add overview section to migration docs
2014-10-31 14:42:26 +01:00
Stian Thorgersen c43040a08e KEYCLOAK-805 Add overview section to migration docs 2014-10-31 14:41:54 +01:00
Stian Thorgersen 488351e46f Merge pull request #828 from stianst/master
KEYCLOAK-787 Clicking back to login after sending password reset email f...
2014-10-31 14:05:31 +01:00
Stian Thorgersen bb2de4dc59 KEYCLOAK-787 Clicking back to login after sending password reset email fails 2014-10-31 13:59:56 +01:00
Marek Posolda fe27f5364a Merge pull request #827 from mposolda/master
Remove realm property from KeycloakSecurityContext. Fix multitenancy on EAP 6.3
2014-10-31 13:32:11 +01:00
mposolda 82af7cbfa2 Fix multi-tenancy on EAP63/AS7 2014-10-31 13:17:35 +01:00
mposolda 44d4f6eb95 Remove redundant realm property from KeycloakSecurityContext 2014-10-31 13:17:35 +01:00
Stian Thorgersen 8d1548bd4d Merge pull request #826 from stianst/master
Fixes
2014-10-31 12:45:31 +01:00
Stian Thorgersen 9b0d5acb50 KEYCLOAK-704 KEYCLOAK-768 Improvements to access code generation 2014-10-31 12:45:03 +01:00
Marek Posolda 39686d5d4e Merge pull request #824 from mposolda/master
KEYCLOAK-808 Issue when DB search is case-sensitive byt LDAP search is n...
2014-10-31 10:42:35 +01:00
mposolda 78a1df693c KEYCLOAK-808 Issue when DB search is case-sensitive byt LDAP search is not 2014-10-31 10:27:55 +01:00
Stian Thorgersen 8adad9dddf KEYCLOAK-806
Increase defaults for 'SSO Session Idle Timeout'
2014-10-31 09:41:21 +01:00
Marek Posolda 65362be4dd Merge pull request #823 from mposolda/master
KEYCLOAK-788 Ensure expired ClientSessions removed during UserSessionPro...
2014-10-30 23:34:27 +01:00
mposolda a6ca925340 KEYCLOAK-788 Ensure expired ClientSessions removed during UserSessionProvider.removeExpiredUserSessions 2014-10-30 23:02:48 +01:00
Marek Posolda 97907cd7ff Merge pull request #822 from mposolda/master
KEYCLOAK-800 and tomcat7 test fixes
2014-10-30 21:42:17 +01:00
mposolda 3d11a4746c Set basedir for Tomcat7 test to avoid creating dirs in workspace 2014-10-30 21:40:35 +01:00
mposolda 0f25280611 KEYCLOAK-800 Ensure that loginFailures infinispan cache is defined 2014-10-30 21:15:52 +01:00
Stian Thorgersen 99016cdc83 Merge pull request #821 from keycloak/multi-tenant-adapter
KEYCLOAK-779
2014-10-30 16:55:00 +01:00
Juraci Paixão Kröhling 8e764e642f KEYCLOAK-779
Adapter multi-tenancy support
2014-10-30 16:54:26 +01:00
Bill Burke a56cef47f2 Merge pull request #820 from patriot1burke/master
remove info logging
2014-10-30 09:53:27 -04:00
Bill Burke cf747dac22 remove info logging 2014-10-30 09:53:06 -04:00
Marek Posolda 0234bdb619 Merge pull request #819 from mposolda/master
KEYCLOAK-799 - Configurable connections pooling for mongo client
2014-10-30 11:20:03 +01:00
mposolda b88b520bad KEYCLOAK-799 - Configurable connections pooling for mongo client 2014-10-30 11:19:16 +01:00
Bill Burke 5446bf77e8 Merge pull request #818 from patriot1burke/master
migrate docs
2014-10-29 16:05:04 -04:00
Bill Burke c5b72464cb migrate docs 2014-10-29 16:04:46 -04:00
Bill Burke 917eb112ff Merge pull request #817 from patriot1burke/master
tomcat7 and bug fix
2014-10-29 16:03:43 -04:00
Bill Burke 0183ac43bc aud should be client-id, issuer should be realm 2014-10-29 15:56:25 -04:00
Bill Burke c660be7bbb tomcat7 docbook 2014-10-29 14:48:10 -04:00
Bill Burke 935045926e tomcat7 distro 2014-10-29 12:30:12 -04:00
Bill Burke d289fa7402 Merge remote-tracking branch 'upstream/master' 2014-10-29 11:42:36 -04:00
Bill Burke 5831cffc19 add logging to pom 2014-10-29 11:42:24 -04:00
Stian Thorgersen 03b8aa1fc2 Merge pull request #812 from stianst/master
Fixes
2014-10-29 14:21:18 +01:00
Stian Thorgersen 05b6dc7af4 KEYCLOAK-797
login-status-iframe.html fails if domain contains hyphen
2014-10-29 14:02:38 +01:00
Stian Thorgersen 8c2d4812b0 KEYCLOAK-763
Document reverse proxy setup on AS7/EAP
2014-10-29 14:02:16 +01:00
Stian Thorgersen fb5482a725 Merge pull request #810 from jpkrohling/JPK-rename-adapter-core
Changed name for adapter-core maven module
2014-10-29 10:35:49 +01:00
Juraci Paixão Kröhling e43dd0ad19 Changed name for adapter-core maven module 2014-10-29 10:18:49 +01:00
Stian Thorgersen 0e6b25fa8d Merge pull request #809 from stianst/master
KEYCLOAK-756 Adding missing metadata to MANIFEST
2014-10-29 10:11:28 +01:00
Stian Thorgersen 6f147f890d KEYCLOAK-756 Adding missing metadata to MANIFEST 2014-10-29 10:08:48 +01:00
Stian Thorgersen 22ddf8b9d1 Merge pull request #808 from stianst/master
KEYCLOAK-726 Downloading a OAuth client installation file results on wro...
2014-10-29 09:13:12 +01:00
Stian Thorgersen 3b23101365 KEYCLOAK-726 Downloading a OAuth client installation file results on wrong JSON 2014-10-29 09:12:14 +01:00
Bill Burke 5e8ca5a140 Merge pull request #807 from patriot1burke/master
add tomcat7 adapter test
2014-10-28 18:41:57 -04:00
Bill Burke da27f43573 add tomcat7 adapter test 2014-10-28 18:41:35 -04:00
Stian Thorgersen c697945d39 Merge pull request #806 from stianst/master
KEYCLOAK-772 Event settings are not imported
2014-10-28 20:35:42 +01:00
Stian Thorgersen fcda005d88 KEYCLOAK-772 Event settings are not imported 2014-10-28 20:21:03 +01:00
Stian Thorgersen ca96c071e8 Merge pull request #805 from stianst/master
Fixes
2014-10-28 20:14:55 +01:00
Stian Thorgersen b23bf58170 KEYCLOAK-352 Third level of navigation is not necessary in some pages 2014-10-28 20:05:18 +01:00
Stian Thorgersen 27d217c220 KEYCLOAK-351 Third level of navigation disappears in 'Add Role' pages 2014-10-28 20:02:27 +01:00
Stian Thorgersen 6e4785e74c KEYCLOAK-777 No login event for social login 2014-10-28 19:56:41 +01:00
Stian Thorgersen 4eb60a169b KEYCLOAK-728 2014-10-28 19:48:11 +01:00
Bill Burke eaaaf91963 Merge pull request #804 from patriot1burke/master
idp descriptor
2014-10-28 12:49:54 -04:00
Bill Burke 12e2a4698d idp descriptor 2014-10-28 12:49:31 -04:00
Bill Burke e5934e9d54 saml docs 2014-10-28 12:16:54 -04:00
Bill Burke 802e184ca9 Merge pull request #803 from patriot1burke/master
saml entity descriptor importer
2014-10-28 12:04:11 -04:00
Bill Burke cb110d095f conflict 2014-10-28 11:55:52 -04:00
Bill Burke e3609cc85b app importer 2014-10-28 11:54:58 -04:00
Marek Posolda e2fd4d3b90 Merge pull request #802 from mposolda/master
KEYCLOAK-740 Documentation of adapters clustering
2014-10-27 23:42:50 +01:00
mposolda b1cfedb488 KEYCLOAK-740 Documentation of adapters clustering 2014-10-27 23:41:36 +01:00
mposolda c6fc44bcc2 Minor fixes and javadoc 2014-10-27 22:02:09 +01:00
Marek Posolda 4b87b8f7e3 Merge pull request #801 from mposolda/master
KEYCLOAK-702 - Added AdapterTokenStore spi. Possibility to save account ...
2014-10-27 17:06:49 +01:00
mposolda a538e25b9d KEYCLOAK-702 - Added AdapterTokenStore spi. Possibility to save account info to cookie as alternative to http session 2014-10-27 16:20:01 +01:00
Bill Burke 971f0f5c16 publish protocol support 2014-10-24 11:25:04 -04:00
Bill Burke 1be070e34d cleanup 2014-10-24 11:00:34 -04:00
Bill Burke dba7864180 Merge remote-tracking branch 'upstream/master' 2014-10-24 10:58:46 -04:00
Bill Burke ce76270ad8 saml key refactor 2014-10-24 10:58:32 -04:00
Stian Thorgersen a2e38d8bd4 Merge pull request #800 from stianst/master
KEYCLOAK-786
2014-10-23 21:00:16 +02:00
Stian Thorgersen 319578f390 KEYCLOAK-786
Value in input fields should be escaped
2014-10-23 20:43:49 +02:00
Marek Posolda 1e68f63715 Merge pull request #797 from mposolda/dynamic-adapter-registration
KEYCLOAK-778 InfinispanUserCacheProvider not working on EAP6 / AS7
2014-10-23 11:38:43 +02:00
mposolda d9331998c3 KEYCLOAK-778 InfinispanUserCacheProvider not working on EAP6 / AS7 2014-10-23 11:36:06 +02:00
Bill Burke ad7e2cd12e Merge pull request #796 from patriot1burke/master
readme
2014-10-22 16:22:09 -04:00
Bill Burke 3b30b63bcc readme 2014-10-22 16:21:46 -04:00
Bill Burke 4417f28c5a Merge pull request #795 from patriot1burke/master
force post binding switch and saml docs
2014-10-22 15:19:02 -04:00
Bill Burke 5fa5379f81 document saml 2014-10-22 15:18:24 -04:00
Bill Burke f715a026ba force post binding switch 2014-10-22 14:32:46 -04:00
Bill Burke de29b566fe Merge pull request #794 from patriot1burke/master
more saml config options
2014-10-22 14:06:51 -04:00
Bill Burke b3fe650e27 Merge remote-tracking branch 'upstream/master' 2014-10-22 14:01:09 -04:00
Bill Burke f38c6d3412 config optiosn 2014-10-22 14:00:56 -04:00
Marek Posolda ed3d13d398 Merge pull request #793 from mposolda/dynamic-adapter-registration
Rewrite NodeRegistrationManagement to better suit multi-tenant usecase
2014-10-22 17:52:19 +02:00
mposolda 5bfb0e73ac Rewrite NodeRegistrationManagement to better suit multi-tenant usecase 2014-10-22 17:11:05 +02:00
Bill Burke 3bfa79e210 Merge pull request #792 from patriot1burke/master
saml distro and examples
2014-10-21 21:39:43 -04:00
Bill Burke 4d3299ae08 saml distro and examples 2014-10-21 21:39:10 -04:00
Marek Posolda 8ec2b2398c Merge pull request #791 from mposolda/dynamic-adapter-registration
Send node registration at 1st request instead of deployment startup. Bug...
2014-10-21 23:22:51 +02:00
mposolda f3da9760a3 Send node registration at 1st request instead of deployment startup. Bugfixing 2014-10-21 23:15:21 +02:00
Bill Burke 87d4cc59a4 Merge pull request #790 from patriot1burke/master
sig alg and upload cert support
2014-10-21 16:39:26 -04:00
Bill Burke a36e43bacc Merge remote-tracking branch 'upstream/master' 2014-10-21 16:33:44 -04:00
Bill Burke 668497df4d upload keys 2014-10-21 16:33:17 -04:00
Bill Burke d3375962ad signature algorithm support 2014-10-21 10:35:39 -04:00
Bill Burke b155382523 Merge pull request #789 from patriot1burke/master
more saml unit tests
2014-10-21 09:10:18 -04:00
Bill Burke e0730e5517 Merge remote-tracking branch 'upstream/master' 2014-10-21 09:05:37 -04:00
Bill Burke c1694a2791 more saml unit tests 2014-10-21 09:05:24 -04:00
Stian Thorgersen dec82ddf68 Merge pull request #787 from stianst/master
KEYCLOAK-711 HttpServletReqest.logout() does not work with relative URI
2014-10-21 12:42:34 +02:00
Marek Posolda 00834ce3c1 Merge pull request #786 from mposolda/dynamic-adapter-registration
KEYCLOAK-759 Added adapter clustering to admin console
2014-10-21 12:37:14 +02:00
Stian Thorgersen 2c218c9aa0 KEYCLOAK-711 HttpServletReqest.logout() does not work with relative URI 2014-10-21 12:36:20 +02:00
mposolda 01c705b4d3 KEYCLOAK-759 Added adapter clustering to admin console 2014-10-21 12:32:53 +02:00
Stian Thorgersen 9565a785b2 Merge pull request #784 from stianst/master
KEYCLOAK-710 Ignore missing roles in access-code
2014-10-21 11:24:28 +02:00
Stian Thorgersen dd4b2f811b KEYCLOAK-710 Ignore missing roles in access-code 2014-10-21 11:15:35 +02:00
Stian Thorgersen ea6d7e1fac Merge pull request #780 from stianst/master
Fixes
2014-10-21 10:01:22 +02:00
Stian Thorgersen 6b2a4229e3 KEYCLOAK-700 Check path is valid in account/login-redirect 2014-10-21 09:57:56 +02:00
Stian Thorgersen 63b41e2548 KEYCLOAK-703 Check valid origin is passed to login-status-iframe 2014-10-21 09:57:56 +02:00
Stian Thorgersen ed895ce02d KEYCLOAK-699 Set maximum size of qr-code 2014-10-21 09:57:56 +02:00
Stian Thorgersen 61b71082f7 Merge pull request #779 from stianst/master
KEYCLOAK-706 SMTP port field should not be mandatory
2014-10-21 09:16:06 +02:00
Stian Thorgersen 5478f282dc KEYCLOAK-706 SMTP port field should not be mandatory 2014-10-21 09:11:49 +02:00
Bill Burke ebaa5bebe5 Merge pull request #778 from patriot1burke/master
saml unit tests
2014-10-20 16:31:39 -04:00
Bill Burke e2de6edff8 saml unit tests 2014-10-20 16:31:00 -04:00
Stian Thorgersen 1d324d6b9a Merge pull request #777 from stianst/master
KEYCLOAK-766 Keycloak fails with OpenShift PostgreSQL 9.2 cartridge, wor...
2014-10-20 19:30:52 +02:00
Stian Thorgersen b0ce226005 KEYCLOAK-766 Keycloak fails with OpenShift PostgreSQL 9.2 cartridge, works fine with MySQL one 2014-10-20 16:50:07 +02:00
Stian Thorgersen a2be747f45 Merge pull request #776 from stianst/master
KEYCLOAK-761
2014-10-20 12:35:48 +02:00
Stian Thorgersen f8e68dadb5 KEYCLOAK-761
Broken databases
2014-10-20 12:35:11 +02:00
Bill Burke 8b05e2ebf8 Merge pull request #775 from patriot1burke/master
saml redirect binding
2014-10-17 16:54:56 -04:00
Bill Burke d0ce72167d merge 2014-10-17 16:54:25 -04:00
Bill Burke c91ecc3033 saml redirect binding 2014-10-17 16:48:45 -04:00
Marek Posolda 4ae6190b79 Merge pull request #774 from mposolda/dynamic-adapter-registration
Fix type in jpa-changelog
2014-10-17 22:13:53 +02:00
mposolda d87a26818e Fix type in jpa-changelog 2014-10-17 22:13:31 +02:00
Marek Posolda 0dae2240e5 Merge pull request #773 from mposolda/dynamic-adapter-registration
KEYCLOAK-759 dynamic registration of managementUrls in cluster
2014-10-17 22:02:47 +02:00
mposolda 7d8f265789 KEYCLOAK-759 dynamic registration of managementUrls in cluster 2014-10-17 21:51:46 +02:00
Stian Thorgersen 8545457f5a Merge pull request #772 from stianst/master
KEYCLOAK-761 Fix database schema
2014-10-17 14:42:57 +02:00
Stian Thorgersen ca2223abb8 KEYCLOAK-761 Fix database schema 2014-10-17 14:21:31 +02:00
Stian Thorgersen 01507fc1dc KEYCLOAK-747 Fix onUserRemoved in user session providers 2014-10-17 13:35:07 +02:00
Bill Burke b9389100cd Merge pull request #771 from patriot1burke/master
saml encryption
2014-10-16 11:52:22 -04:00
Bill Burke 91c545534e Merge remote-tracking branch 'upstream/master' 2014-10-16 11:45:03 -04:00
Bill Burke 3e5afcde9e saml encryption 2014-10-16 11:44:51 -04:00
Bill Burke c90bf2d9e1 Merge pull request #770 from patriot1burke/master
saml signatures
2014-10-16 09:20:08 -04:00
Bill Burke 638ce06f77 Merge remote-tracking branch 'upstream/master' 2014-10-16 09:14:30 -04:00
Bill Burke 4750b22b6d saml signatures 2014-10-16 09:14:04 -04:00
Stian Thorgersen 7d59117fc1 Merge pull request #769 from stianst/master
Added promptOnNonLocalDatabase=false to clean-jpa
2014-10-16 13:03:39 +02:00
Stian Thorgersen 425b2199f2 Added promptOnNonLocalDatabase=false to clean-jpa 2014-10-16 13:03:00 +02:00
Stian Thorgersen a882f95749 Merge pull request #768 from stianst/master
Simplified embedded infinispan connection config
2014-10-16 12:40:08 +02:00
Stian Thorgersen cdcbafa311 Simplified embedded infinispan connection config 2014-10-16 12:39:14 +02:00
Stian Thorgersen a36fd419b5 Merge pull request #767 from stianst/master
Add clean-jpa profile to testsuite
2014-10-16 10:02:53 +02:00
Stian Thorgersen 9029ec4f28 Add clean-jpa profile to testsuite 2014-10-16 10:02:24 +02:00
Stian Thorgersen d013e9869a Merge pull request #766 from stianst/master
KEYCLOAK-761 Fix type of credential#salt
2014-10-16 09:35:55 +02:00
Stian Thorgersen fe5eb1a06d KEYCLOAK-761 Fix type of credential#salt 2014-10-16 09:34:53 +02:00
Bill Burke 582ee8897e Merge pull request #765 from patriot1burke/master
app cert generation support
2014-10-14 19:17:26 -04:00
Bill Burke 4e41041469 db 2014-10-14 19:13:23 -04:00
Bill Burke 8fbc8fc736 Merge remote-tracking branch 'upstream/master' 2014-10-14 18:39:08 -04:00
Bill Burke 7760887ac1 app cert support, bug fixes 2014-10-14 18:38:48 -04:00
Stian Thorgersen 7e7ab86821 Merge pull request #763 from stianst/master
KEYCLOAK-755 Support env variables in keycloak-server.json
2014-10-14 15:06:57 +02:00
Stian Thorgersen 106a0cb48d KEYCLOAK-755 Support env variables in keycloak-server.json 2014-10-14 15:06:18 +02:00
Stian Thorgersen 75be776aa1 Removed properties from server keycloak-server.json 2014-10-14 15:06:18 +02:00
Stian Thorgersen 2dbebd164f Merge pull request #762 from stianst/master
KEYCLOAK-753 Add 'username:' prefix to remember me cookie to prevent iss...
2014-10-14 13:49:59 +02:00
Stian Thorgersen 1021e8af5c KEYCLOAK-753 Add 'username:' prefix to remember me cookie to prevent issue with old cookie 2014-10-14 13:44:03 +02:00
Stian Thorgersen 2ad688a663 Merge pull request #761 from stianst/liquibase
KEYCLOAK-736 Fix class-path issues
2014-10-14 13:05:25 +02:00
Stian Thorgersen bf7effc6f2 KEYCLOAK-736 Fix class-path issues 2014-10-14 13:04:38 +02:00
Stian Thorgersen d86547620a Merge pull request #760 from stianst/liquibase
KEYCLOAK-736 Database migration support"
2014-10-14 10:41:48 +02:00
Stian Thorgersen 94de88ef3b KEYCLOAK-736 Database migration support" 2014-10-14 10:07:41 +02:00
Stian Thorgersen 101c7697fd Merge pull request #759 from stianst/master
KEYCLOAK-744 Document view-event and manage-event roles
2014-10-13 14:02:47 +02:00
Stian Thorgersen cf94f4f84a KEYCLOAK-744 Document view-event and manage-event roles 2014-10-13 14:02:20 +02:00
Stian Thorgersen 6855b2f0e4 Merge pull request #758 from stianst/master
KEYCLOAK-746 Allow linking to account from external provider
2014-10-13 13:19:36 +02:00
Stian Thorgersen 4d401224de KEYCLOAK-746 Allow linking to account from external provider 2014-10-13 10:48:45 +02:00
Bill Burke 4d007c776a generate/store realm certificate 2014-10-11 10:49:04 -04:00
Bill Burke eac1fb23cf Merge pull request #757 from patriot1burke/master
use id for oauth in admin console
2014-10-10 16:56:47 -04:00
Bill Burke d9ff44b870 Merge remote-tracking branch 'upstream/master' 2014-10-10 16:56:16 -04:00
Bill Burke deffa9b4e1 oauth id in admin console 2014-10-10 16:55:57 -04:00
Bill Burke 3d7fca885e Merge pull request #756 from patriot1burke/master
freeotp
2014-10-10 16:08:03 -04:00
Bill Burke 08c5fed1b3 freeotp 2014-10-10 16:07:35 -04:00
Bill Burke 23d0361168 Merge pull request #755 from patriot1burke/master
admin console and model attributes
2014-10-09 18:31:16 -04:00
Bill Burke 0ace5cd746 merge conflicts 2014-10-09 18:26:14 -04:00
Bill Burke 94da99bf10 use app id in admin console urls 2014-10-09 18:22:02 -04:00
Marek Posolda 3d5d7777f6 Merge pull request #754 from mposolda/master
KEYCLOAK748 cluster-aware logout for non-distributable applications
2014-10-09 21:36:13 +02:00
mposolda 9954d68a1f KEYCLOAK-748 cluster-aware logout for non-distributable apps 2014-10-09 21:33:07 +02:00
mposolda 00716b7bfc Docker config update 2014-10-09 21:33:06 +02:00
Stian Thorgersen 6d1555262e Merge branch 'abstractj-totp-name' 2014-10-09 13:08:54 +02:00
Bruno Oliveira c00c712c39 KEYCLOAK-745 Display the realm name for OTP QR code scan 2014-10-09 13:03:48 +02:00
Marek Posolda 63f4a32f2e Merge pull request #752 from mposolda/stateless-session-mgmt
Test for KEYCLOAK-741
2014-10-09 12:36:40 +02:00
mposolda 2445575a04 Test for KEYCLOAK-741 2014-10-09 12:30:30 +02:00
Marek Posolda 56fe821bef Merge pull request #751 from mposolda/stateless-session-mgmt
Fix mongo to pass with testsuite
2014-10-09 11:38:59 +02:00
mposolda 36cc298b32 Fix mongo to pass with testsuite 2014-10-09 11:37:42 +02:00
Marek Posolda a00d36eea2 Merge pull request #750 from mposolda/stateless-session-mgmt
Stateless session mgmt
2014-10-08 23:32:51 +02:00
mposolda ac8b43358d Reduce logging 2014-10-08 23:28:02 +02:00
mposolda 1e33931f23 KEYCLOAK-741 Failure to refresh token should invalidate http session 2014-10-08 22:18:11 +02:00
mposolda 7e7406ddb7 KEYCLOAK-743 Stateless session mgmt. Drop statistics for adapters. 2014-10-08 22:18:10 +02:00
mposolda 84e1ace539 KEYCLOAK-742 Added always-refresh-token option to adapters 2014-10-08 22:18:10 +02:00
Bill Burke a1d1877751 ClientModel attributes and protocol 2014-10-08 10:54:13 -04:00
Bill Burke 390ca0930b Merge pull request #749 from patriot1burke/master
undertow slash redirect problem
2014-10-08 09:46:20 -04:00
Bill Burke 13a2108846 undertow slash redirect problem 2014-10-08 09:45:49 -04:00
Bill Burke 9ffd517b53 Merge pull request #747 from patriot1burke/master
saml backchannel logout
2014-10-07 18:18:54 -04:00
Bill Burke 5f1e6f3a23 merge 2014-10-07 18:17:44 -04:00
Bill Burke 6d5ab0f66b saml backchannel logout 2014-10-07 18:06:02 -04:00
Marek Posolda bc85be23b7 Merge pull request #746 from mposolda/master
KEYCLOAK-738 Possible NPE in MemUserSessionProvider.getUserSessions
2014-10-07 19:21:14 +02:00
mposolda 6522455b44 KEYCLOAK-738 Possible NPE in MemUserSessionProvider.getUserSessions 2014-10-07 19:19:46 +02:00
Stian Thorgersen 2e76be45fa Merge pull request #744 from pilhuhn/patch-1
Update adapter-config.xml
2014-10-07 13:15:05 +02:00
Marek Posolda 0c3a9be1a1 Merge pull request #745 from mposolda/docker
Possibility to test EAP6 cluster with docker+fig
2014-10-07 12:42:08 +02:00
mposolda a6bbc492b8 Possibility to test EAP6 cluster with docker+fig 2014-10-07 12:33:44 +02:00
Heiko W. Rupp 3d4ef91bf1 Update adapter-config.xml
Fix some minor typos in the json, Otherwise it is invalid.

Also deploying in the keycloak 1.0.1 appliance, the line

"cors-allowed-methods" : [ "POST", "PUT", "DELETE", "GET" ],

makes parsing fail with 

11:19:10,121 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) JBAS014613: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {"JBAS014671: Failed services" => {"jboss.undertow.deployment.default-server.default-host./rhq-metrics" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./rhq-metrics: Failed to start service
    Caused by: java.lang.RuntimeException: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.String out of START_ARRAY token
 at [Source: java.io.BufferedInputStream@1605c2fe; line: 9, column: 24] (through reference chain: org.keycloak.representations.adapters.config.AdapterConfig[\"cors-allowed-methods\"])
    Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.String out of START_ARRAY token
 at [Source: java.io.BufferedInputStream@1605c2fe; line: 9, column: 24] (through reference chain: org.keycloak.representations.adapters.config.AdapterConfig[\"cors-allowed-methods\"])"}}
2014-10-07 11:21:15 +02:00
Stian Thorgersen 1604315e40 Merge pull request #743 from stianst/master
KEYCLOAK-730 Document clustering
2014-10-06 13:58:57 +02:00
Stian Thorgersen f702d8f1ff KEYCLOAK-730 Document clustering 2014-10-06 13:58:32 +02:00
Marek Posolda 87f826c850 Merge pull request #742 from mposolda/master
Simplify method signature in JsonSerialization
2014-10-05 22:12:19 +02:00
mposolda 59bf7e524f Change method signature 2014-10-05 20:07:54 +02:00
Bill Burke e01424b815 Merge pull request #741 from patriot1burke/master
saml basic
2014-10-04 22:15:56 -04:00
Bill Burke c609ae3496 saml 2014-10-04 22:15:25 -04:00
Bill Burke e3a3933390 saml basic 2014-10-04 21:27:48 -04:00
Stian Thorgersen 1f40ab407c Merge pull request #739 from stianst/master
KEYCLOAK-729
2014-10-03 14:11:49 +02:00
Stian Thorgersen 1d66bd9c15 KEYCLOAK-729
Update themes documentation
2014-10-03 14:11:03 +02:00
Stian Thorgersen 777999e0ea Merge pull request #737 from stianst/master
KEYCLOAK-722 Refreshing token throws RuntimeException if realm keys have...
2014-10-03 13:23:53 +02:00
Stian Thorgersen 0d5be568f8 KEYCLOAK-722 Refreshing token throws RuntimeException if realm keys have changed 2014-10-03 13:23:21 +02:00
Stian Thorgersen 17bb42d60e Merge pull request #736 from stianst/master
KEYCLOAK-662 NPE when using direct grant API with email as username
2014-10-03 12:12:16 +02:00
Stian Thorgersen d6f030a05a KEYCLOAK-662 NPE when using direct grant API with email as username 2014-10-03 12:10:52 +02:00
Marek Posolda 18401815af Merge pull request #734 from mposolda/master
Workaround for WFLY-3345 so logout can work for 'distributable' applicat...
2014-10-03 11:27:28 +02:00
mposolda 10e618dee9 Workaround for WFLY-3345 so logout can work for 'distributable' applications 2014-10-03 11:26:34 +02:00
Stian Thorgersen 98f9c798f0 Merge pull request #733 from stianst/master
KEYCLOAK-701 Use built-in themes if specified theme is not found
2014-10-03 11:24:40 +02:00
Stian Thorgersen 49f3172163 KEYCLOAK-701 Use built-in themes if specified theme is not found 2014-10-03 11:17:12 +02:00
Stian Thorgersen 53489cd556 Merge pull request #731 from stianst/master
Add login test with multiple sessions for same user
2014-10-03 10:42:39 +02:00
Stian Thorgersen a5aa1da841 Add login test with multiple sessions for same user 2014-10-03 10:41:04 +02:00
Marek Posolda e11180a4f0 Merge pull request #729 from mposolda/master
KEYCLOAK-732 AuthenticationManager.logout should logout just current use...
2014-10-02 22:54:31 +02:00
mposolda e6121f301f KEYCLOAK-732 AuthenticationManager.logout should logout just current userSession 2014-10-02 22:52:44 +02:00
Marek Posolda 4050cf9ac3 Merge pull request #728 from mposolda/master
KEYCLOAK-731
2014-10-02 19:19:09 +02:00
mposolda 50f148cd7c Use one option "auth-server-url-for-backend-requests" instead of 3 options 2014-10-02 19:16:04 +02:00
mposolda 72b5632cfe KEYCLOAK-731 Support for replacing configuration of Java adapters with system properties 2014-10-02 19:15:37 +02:00
Stian Thorgersen 8855bcf3c1 Merge pull request #727 from stianst/master
KEYCLOAK-727: 'logout'->'log out' + moved message to bundle
2014-10-02 10:55:01 +02:00
Lukas Fryc a85b58dccd KEYCLOAK-727: 'logout'->'log out' + moved message to bundle 2014-10-02 10:54:26 +02:00
Stian Thorgersen 01e6d09d79 Merge pull request #725 from stianst/master
Fixes to infinispan user session provider
2014-10-02 09:43:21 +02:00
Stian Thorgersen 597ee2b8c9 Fixes to infinispan user session provider 2014-10-02 09:00:48 +02:00
Marek Posolda 6ff37cfc24 Merge pull request #724 from mposolda/master
KEYCLOAK-709 ResourceAdminManager.logoutApplication shouldn't immediatel...
2014-10-01 23:21:46 +02:00
mposolda 95521e8a95 KEYCLOAK-709 ResourceAdminManager.logoutApplication shouldn't immediatelly fail with RuntimeException 2014-10-01 23:20:49 +02:00
Bill Burke 4b254475da Merge pull request #723 from patriot1burke/master
finish login protocol refactoring
2014-10-01 14:58:42 -04:00
Bill Burke 6cf62a2768 move pre-auth 2014-10-01 14:57:52 -04:00
Bill Burke 71216bf2c9 merge 2014-10-01 14:21:23 -04:00
Bill Burke cbc383d494 finish protocol refactoring 2014-10-01 14:19:59 -04:00
Marek Posolda a75c9ee04e Merge pull request #722 from mposolda/master
Http session replication working for example apps on Wildfly
2014-10-01 19:14:14 +02:00
mposolda d7bcd41909 Ensure that KeycloakUndertowAccount and referenced classes can be serialized in session 2014-10-01 19:08:41 +02:00
Bill Burke 546d45b009 protocol abstraction 2014-10-01 10:38:42 -04:00
Bill Burke 99738ea4ad Merge remote-tracking branch 'upstream/master' 2014-10-01 10:01:59 -04:00
Bill Burke 4b399fe05a login protocol abstraction 2014-10-01 10:01:42 -04:00
mposolda eb920b4993 Examples: Don't require to create HttpSession when visiting JSP pages 2014-10-01 13:44:38 +02:00
mposolda 1b6b95bb9a Added distributable to customer-portal in cluster test 2014-10-01 11:52:16 +02:00
Marek Posolda bd077a3adb Merge pull request #721 from mposolda/master
Use infinispan UserSession provider for docker cluster env. Don't prepar...
2014-10-01 10:52:48 +02:00
mposolda fd0a000823 Use infinispan UserSession provider for docker cluster env. Don't prepare nodes during each fig start 2014-10-01 10:51:24 +02:00
Bill Burke a6ae8d08ac Merge pull request #720 from patriot1burke/master
token service refactoring
2014-09-30 16:03:13 -04:00
Bill Burke e32f73880f Merge remote-tracking branch 'upstream/master' 2014-09-30 15:58:39 -04:00
Bill Burke 63b65c933b token service refactoring 2014-09-30 15:58:20 -04:00
Marek Posolda 72ec9ccb00 Merge pull request #719 from mposolda/master
KEYCLOAK-721 Possibility to resolve relative URI by hostname. Examples working in docker clustering env
2014-09-30 20:17:25 +02:00
mposolda 89dc55a106 Make examples working in docker cluster env 2014-09-30 19:50:17 +02:00
mposolda 80a9a8984a Cleanup. Support to use-hostname-for-local-requests added to Demo examples 2014-09-30 17:37:36 +02:00
mposolda 18fe808ce0 KEYCLOAK-720 Support for relative URI resolved by hostname in wildfly adapter 2014-09-30 17:37:36 +02:00
mposolda 337b03fc62 KEYCLOAK-720 added support for oauth clients 2014-09-30 17:37:36 +02:00
Stian Thorgersen 617c61034f Merge pull request #718 from stianst/master
KEYCLOAK-725 Add realm update to the Admin Client
2014-09-30 15:44:16 +02:00
Stian Thorgersen f026772c87 KEYCLOAK-725 Add realm update to the Admin Client 2014-09-30 15:43:18 +02:00
Stian Thorgersen 0f307afd16 Merge pull request #717 from stianst/master
Fixes to JPA user session provider
2014-09-30 14:47:45 +02:00
Stian Thorgersen a1f223735c Fixes to JPA user session provider 2014-09-30 14:47:22 +02:00
Stian Thorgersen d1bb872aec Merge pull request #716 from stianst/master
Fixes to Mongo user session provider
2014-09-30 14:25:49 +02:00
Stian Thorgersen 1d4e842cc0 Fixes to Mongo user session provider 2014-09-30 14:24:49 +02:00
Stian Thorgersen 209fdc1255 Fix UserSessionProviderTest.testGetByClientPaginated 2014-09-30 10:59:37 +02:00
Stian Thorgersen 3ded1943e2 Merge pull request #715 from keycloak/clustering
Fixes to UserSessionProviderTest
2014-09-30 10:23:10 +02:00
Stian Thorgersen bdeb59f87e Fixes to UserSessionProviderTest 2014-09-30 10:22:33 +02:00
Stian Thorgersen 994adaf493 Merge pull request #714 from keycloak/clustering
Clustering support
2014-09-30 10:21:21 +02:00
Stian Thorgersen 99c73a9cc7 Clustering support 2014-09-30 09:40:20 +02:00
Bill Burke 6075ef221f Merge pull request #713 from patriot1burke/master
action url refactor
2014-09-29 16:58:27 -04:00
Bill Burke fc867e59ea action url refactor 2014-09-29 16:57:58 -04:00
Bill Burke 6212403569 Merge pull request #712 from patriot1burke/master
login refactor phase 2, still more to do
2014-09-29 16:16:10 -04:00
Bill Burke 75a3093dda login refactor phase 2, still more to do 2014-09-29 16:15:33 -04:00
Bill Burke 6c46af5b3c Merge pull request #711 from patriot1burke/master
cliensession refactor
2014-09-29 10:01:35 -04:00
Bill Burke 67f10bee24 Merge remote-tracking branch 'upstream/master' 2014-09-29 09:56:37 -04:00
Bill Burke 524b423733 ClientSession everywhere refactor phase1 2014-09-26 17:44:33 -04:00
Bill Burke 0bf6c36ca7 add auth method to ClientSession 2014-09-23 11:18:39 -04:00
Bill Burke 66d58476d0 refactor security page flow 2014-09-23 11:05:10 -04:00
Bill Burke bf42227224 remove junk 2014-09-22 16:35:22 -04:00
Bill Burke 99a6713e6f clientsession notes 2014-09-22 16:34:42 -04:00
5137 changed files with 680118 additions and 100529 deletions

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
* text=auto
*.html text eol=lf
*.java text eol=lf
*.js text eol=lf
*.json text eol=lf
*.jsp text eol=lf
*.md text eol=lf
*.properties text eol=lf
*.svg text auto
*.xml text eol=lf
*.xsl text eol=lf
*.png binary
*.jpg binary
*.gif binary
*.ttf binary
*.eot binary
*.otf binary
*.woff binary
+6
View File
@@ -9,6 +9,12 @@
.settings
.classpath
# NetBeans #
############
nbactions.xml
nb-configuration.xml
catalog.xml
# Compiled source #
###################
*.com
+21
View File
@@ -0,0 +1,21 @@
language: java
env:
global:
- MAVEN_SKIP_RC=true
- MAVEN_OPTS="-Xms512m -Xmx2048m"
jdk:
- oraclejdk8
before_script:
- export MAVEN_SKIP_RC=true
install:
- mvn install -Pdistribution -DskipTests=true -B -V -q
script:
- mvn test -B
- mvn -file testsuite/integration-arquillian test -B -Pno-console
sudo: false
+67 -30
View File
@@ -1,35 +1,72 @@
keycloak
Keycloak
========
Please visit [http://keycloak.org](http://keycloak.org) for more information on Keycloak including how to download, documentation,
and video tutorials.
Keycloak is an SSO Service for web apps and REST services. For more information visit [http://keycloak.org](http://keycloak.org).
Keycloak is an SSO Service for web apps and REST services.
It can be used for social applications as well as enterprise applications. It is based on OpenID Connect with SAML support in the works.
Here's some of the features:
* SSO and Single Log Out for browser applications
* Social Broker. Enable Google, Facebook, Yahoo, Twitter social login with no code required.
* Optional LDAP/Active Directory integration
* Optional User Registration
* Password and TOTP support (via Google Authenticator). Client cert auth coming soon.
* User session management from both admin and user perspective
* Customizable themes for user facing pages: login, grant pages, account management, emails, and admin console all customizable!
* OAuth Bearer token auth for REST Services
* Integrated Browser App to REST Service token propagation
* Admin REST API
* OAuth 2.0 Grant requests
* CORS Support
* CORS Web Origin management and validation
* Completely centrally managed user and role mapping metadata. Minimal configuration at the application side
* Admin Console for managing users, roles, role mappings, applications, user sessions, allowed CORS web origins, and OAuth clients.
* Deployable as a WAR, appliance, or an Openshift cloud service (SaaS).
* Supports JBoss AS7, EAP 6.x, and Wildfly applications. Plans to support Node.js, RAILS, GRAILS, and other non-Java applications.
* Javascript/HTML 5 adapter for pure Javascript apps
* Session management from admin console
* Revocation policies
* Password policies
* OpenID Connect Support
Building
--------
Please visit [http://keycloak.org](http://keycloak.org) for more information on Keycloak including how to download, documentation,
and video tutorials.
Ensure you have JDK 8 (or newer), Maven 3.2.1 (or newer) and Git installed
java -version
mvn -version
git --version
First clone the Keycloak repository:
git clone https://github.com/keycloak/keycloak.git
cd keycloak
To build Keycloak run:
mvn install
This will build all modules and run the testsuite.
To build the distribution run:
mvn install -Pdistribution
Once completed you will find distribution archives in `distribution`.
Starting Keycloak
-----------------
To start Keycloak during development first build as specficied above, then run:
mvn -f testsuite/integration/pom.xml exec:java -Pkeycloak-server
To start Keycloak from the appliance distribution first build the distribution it as specified above, then run:
tar xfz distribution/appliance-dist/target/keycloak-appliance-dist-all-<VERSION>.tar.gz
cd keycloak-appliance-dist-all-<VERSION>/keycloak
bin/standalone.sh
To stop the server press `Ctrl + C`.
Contributing
------------
* See [Hacking on Keycloak](misc/HackingOnKeycloak.md)
Documentation
-------------
* [User Guide, Admin REST API and Javadocs](http://keycloak.jboss.org/docs)
* Developer documentation
* [Hacking on Keycloak](misc/HackingOnKeycloak.md) - how to become a Keycloak contributor
* [Testsuite](misc/Testsuite.md) - details about testsuite, but also how to quickly run Keycloak during development and a few test tools (OTP generation, LDAP server, Mail server)
* [Database Testing](misc/DatabaseTesting.md) - how to do testing of Keycloak on different databases
* [Updating Database](misc/UpdatingDatabaseSchema.md) - how to change the Keycloak database
* [Release Process](misc/ReleaseProcess.md) - how to release Keycloak
License
-------
* [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+50
View File
@@ -0,0 +1,50 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.8.0.Final</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-broker-core</artifactId>
<name>Keycloak Broker Core</name>
<description/>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-model-api</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-events-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,100 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.provider;
import org.keycloak.events.EventBuilder;
import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.IdentityProviderModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
/**
* @author Pedro Igor
*/
public abstract class AbstractIdentityProvider<C extends IdentityProviderModel> implements IdentityProvider<C> {
private final C config;
public AbstractIdentityProvider(C config) {
this.config = config;
}
public C getConfig() {
return this.config;
}
@Override
public Response export(UriInfo uriInfo, RealmModel realm, String format) {
return Response.noContent().build();
}
@Override
public void close() {
// no-op
}
@Override
public Object callback(RealmModel realm, AuthenticationCallback callback, EventBuilder event) {
return null;
}
@Override
public Response performLogin(AuthenticationRequest request) {
return null;
}
@Override
public Response keycloakInitiatedBrowserLogout(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm) {
return null;
}
@Override
public void backchannelLogout(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm) {
}
@Override
public void attachUserSession(UserSessionModel userSession, ClientSessionModel clientSession, BrokeredIdentityContext context) {
}
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, BrokeredIdentityContext context) {
}
@Override
public void importNewUser(KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context) {
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context) {
}
@Override
public IdentityProviderDataMarshaller getMarshaller() {
return new DefaultDataMarshaller();
}
}
@@ -0,0 +1,59 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.provider;
import org.keycloak.Config;
import org.keycloak.models.IdentityProviderModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* @author Pedro Igor
*/
public abstract class AbstractIdentityProviderFactory<T extends IdentityProvider> implements IdentityProviderFactory<T> {
@Override
public void close() {
}
@Override
public void init(Config.Scope config) {
}
@Override
public void postInit(KeycloakSessionFactory factory) {
}
@Override
public T create(KeycloakSession session) {
return null;
}
@Override
public Map<String, String> parseConfig(InputStream inputStream) {
return new HashMap<String, String>();
}
}
@@ -0,0 +1,43 @@
package org.keycloak.broker.provider;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public abstract class AbstractIdentityProviderMapper implements IdentityProviderMapper {
@Override
public void close() {
}
@Override
public IdentityProviderMapper create(KeycloakSession session) {
return null;
}
@Override
public void init(org.keycloak.Config.Scope config) {
}
@Override
public void postInit(KeycloakSessionFactory factory) {
}
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
}
@Override
public void importNewUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
}
}
@@ -0,0 +1,83 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.provider;
import org.jboss.resteasy.spi.HttpRequest;
import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import javax.ws.rs.core.UriInfo;
/**
* @author Pedro Igor
*/
public class AuthenticationRequest {
private final KeycloakSession session;
private final UriInfo uriInfo;
private final String state;
private final HttpRequest httpRequest;
private final RealmModel realm;
private final String redirectUri;
private final ClientSessionModel clientSession;
public AuthenticationRequest(KeycloakSession session, RealmModel realm, ClientSessionModel clientSession, HttpRequest httpRequest, UriInfo uriInfo, String state, String redirectUri) {
this.session = session;
this.realm = realm;
this.httpRequest = httpRequest;
this.uriInfo = uriInfo;
this.state = state;
this.redirectUri = redirectUri;
this.clientSession = clientSession;
}
public KeycloakSession getSession() {
return session;
}
public UriInfo getUriInfo() {
return this.uriInfo;
}
public String getState() {
return this.state;
}
public HttpRequest getHttpRequest() {
return this.httpRequest;
}
public RealmModel getRealm() {
return this.realm;
}
/**
* <p>Returns the redirect url that must be included in an authentication request in order to process responses from an
* identity provider.</p>
*
* @return
*/
public String getRedirectUri() {
return this.redirectUri;
}
public ClientSessionModel getClientSession() {
return this.clientSession;
}
}
@@ -0,0 +1,220 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.provider;
import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.Constants;
import org.keycloak.models.IdentityProviderModel;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>Represents all identity information obtained from an {@link org.keycloak.broker.provider.IdentityProvider} after a
* successful authentication.</p>
*
* @author Pedro Igor
*/
public class BrokeredIdentityContext {
private String id;
private String username;
private String modelUsername;
private String email;
private String firstName;
private String lastName;
private String brokerSessionId;
private String brokerUserId;
private String code;
private String token;
private IdentityProviderModel idpConfig;
private IdentityProvider idp;
private Map<String, Object> contextData = new HashMap<>();
private ClientSessionModel clientSession;
public BrokeredIdentityContext(String id) {
if (id == null) {
throw new RuntimeException("No identifier provider for identity.");
}
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
* Username in remote idp
*
* @return
*/
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
/**
* username to store in UserModel
*
* @return
*/
public String getModelUsername() {
return modelUsername;
}
public void setModelUsername(String modelUsername) {
this.modelUsername = modelUsername;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getBrokerSessionId() {
return brokerSessionId;
}
public void setBrokerSessionId(String brokerSessionId) {
this.brokerSessionId = brokerSessionId;
}
public String getBrokerUserId() {
return brokerUserId;
}
public void setBrokerUserId(String brokerUserId) {
this.brokerUserId = brokerUserId;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public IdentityProviderModel getIdpConfig() {
return idpConfig;
}
public void setIdpConfig(IdentityProviderModel idpConfig) {
this.idpConfig = idpConfig;
}
public IdentityProvider getIdp() {
return idp;
}
public void setIdp(IdentityProvider idp) {
this.idp = idp;
}
public Map<String, Object> getContextData() {
return contextData;
}
public void setContextData(Map<String, Object> contextData) {
this.contextData = contextData;
}
// Set the attribute, which will be available on "Update profile" page and in authenticators
public void setUserAttribute(String attributeName, String attributeValue) {
List<String> list = new ArrayList<>();
list.add(attributeValue);
getContextData().put(Constants.USER_ATTRIBUTES_PREFIX + attributeName, list);
}
public String getUserAttribute(String attributeName) {
List<String> userAttribute = (List<String>) getContextData().get(Constants.USER_ATTRIBUTES_PREFIX + attributeName);
if (userAttribute == null || userAttribute.isEmpty()) {
return null;
} else {
return userAttribute.get(0);
}
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public ClientSessionModel getClientSession() {
return clientSession;
}
public void setClientSession(ClientSessionModel clientSession) {
this.clientSession = clientSession;
}
public void setName(String name) {
if (name != null) {
int i = name.lastIndexOf(' ');
if (i != -1) {
firstName = name.substring(0, i);
lastName = name.substring(i + 1);
} else {
firstName = name;
}
}
}
@Override
public String toString() {
return "{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", email='" + email + '\'' +
'}';
}
}
@@ -0,0 +1,46 @@
package org.keycloak.broker.provider;
import java.io.IOException;
import java.util.List;
import org.keycloak.common.util.Base64Url;
import org.keycloak.util.JsonSerialization;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class DefaultDataMarshaller implements IdentityProviderDataMarshaller {
@Override
public String serialize(Object value) {
if (value instanceof String) {
return (String) value;
} else {
try {
byte[] bytes = JsonSerialization.writeValueAsBytes(value);
return Base64Url.encode(bytes);
} catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
}
@Override
public <T> T deserialize(String serialized, Class<T> clazz) {
try {
if (clazz.equals(String.class)) {
return clazz.cast(serialized);
} else {
byte[] bytes = Base64Url.decode(serialized);
if (List.class.isAssignableFrom(clazz)) {
List list = JsonSerialization.readValue(bytes, List.class);
return clazz.cast(list);
} else {
return JsonSerialization.readValue(bytes, clazz);
}
}
} catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
}
@@ -0,0 +1,89 @@
package org.keycloak.broker.provider;
import org.keycloak.models.ClientModel;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class HardcodedAttributeMapper extends AbstractIdentityProviderMapper {
public static final String ATTRIBUTE = "attribute";
public static final String ATTRIBUTE_VALUE = "attribute.value";
protected static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
static {
ProviderConfigProperty property;
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE);
property.setLabel("User Attribute");
property.setHelpText("Name of user attribute you want to hardcode");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE_VALUE);
property.setLabel("User Attribute Value");
property.setHelpText("Value you want to hardcode");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
}
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getDisplayCategory() {
return "Attribute Importer";
}
@Override
public String getDisplayType() {
return "Hardcoded Attribute";
}
public static final String[] COMPATIBLE_PROVIDERS = {ANY_PROVIDER};
public static final String PROVIDER_ID = "hardcoded-attribute-idp-mapper";
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(ATTRIBUTE);
String attributeValue = mapperModel.getConfig().get(ATTRIBUTE_VALUE);
context.setUserAttribute(attribute, attributeValue);
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(ATTRIBUTE);
String attributeValue = mapperModel.getConfig().get(ATTRIBUTE_VALUE);
user.setSingleAttribute(attribute, attributeValue);
}
@Override
public String getHelpText() {
return "When user is imported from provider, hardcode a value to a specific user attribute.";
}
}
@@ -0,0 +1,79 @@
package org.keycloak.broker.provider;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.KeycloakModelUtils;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class HardcodedRoleMapper extends AbstractIdentityProviderMapper {
public static final String ROLE = "role";
protected static final List<ProviderConfigProperty> configProperties = new ArrayList<>();
static {
ProviderConfigProperty property;
property = new ProviderConfigProperty();
property.setName(ROLE);
property.setLabel("Role");
property.setHelpText("Role to grant to user. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference an application role the syntax is appname.approle, i.e. myapp.myrole");
property.setType(ProviderConfigProperty.ROLE_TYPE);
configProperties.add(property);
}
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getDisplayCategory() {
return "Role Importer";
}
@Override
public String getDisplayType() {
return "Hardcoded Role";
}
public static final String[] COMPATIBLE_PROVIDERS = {ANY_PROVIDER};
public static final String PROVIDER_ID = "oidc-hardcoded-role-idp-mapper";
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public void importNewUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String roleName = mapperModel.getConfig().get(ROLE);
RoleModel role = KeycloakModelUtils.getRoleFromString(realm, roleName);
if (role == null) throw new IdentityBrokerException("Unable to find role: " + roleName);
user.grantRole(role);
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
}
@Override
public String getHelpText() {
return "When user is imported from provider, hardcode a role mapping for it.";
}
}
@@ -0,0 +1,87 @@
package org.keycloak.broker.provider;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class HardcodedUserSessionAttributeMapper extends AbstractIdentityProviderMapper {
public static final String ATTRIBUTE = "attribute";
public static final String ATTRIBUTE_VALUE = "attribute.value";
protected static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
static {
ProviderConfigProperty property;
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE);
property.setLabel("User Session Attribute");
property.setHelpText("Name of user session attribute you want to hardcode");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE_VALUE);
property.setLabel("User Session Attribute Value");
property.setHelpText("Value you want to hardcode");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
}
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getDisplayCategory() {
return "Attribute Importer";
}
@Override
public String getDisplayType() {
return "Hardcoded User Session Attribute";
}
public static final String[] COMPATIBLE_PROVIDERS = {ANY_PROVIDER};
public static final String PROVIDER_ID = "hardcoded-user-session-attribute-idp-mapper";
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(ATTRIBUTE);
String attributeValue = mapperModel.getConfig().get(ATTRIBUTE_VALUE);
context.getClientSession().setUserSessionNote(attribute, attributeValue);
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(ATTRIBUTE);
String attributeValue = mapperModel.getConfig().get(ATTRIBUTE_VALUE);
context.getClientSession().setUserSessionNote(attribute, attributeValue);
}
@Override
public String getHelpText() {
return "When user is imported from provider, hardcode a value to a specific user session attribute.";
}
}
@@ -0,0 +1,32 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.provider;
/**
* @author pedroigor
*/
public class IdentityBrokerException extends RuntimeException {
public IdentityBrokerException(String message) {
super(message);
}
public IdentityBrokerException(String message, Throwable t) {
super(message, t);
}
}
@@ -0,0 +1,112 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.provider;
import org.keycloak.events.EventBuilder;
import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.FederatedIdentityModel;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.IdentityProviderModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.provider.Provider;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
/**
* @author Pedro Igor
*/
public interface IdentityProvider<C extends IdentityProviderModel> extends Provider {
interface AuthenticationCallback {
/**
* This method should be called by provider after the JAXRS callback endpoint has finished authentication
* with the remote IDP
*
* @param context
* @return
*/
Response authenticated(BrokeredIdentityContext context);
Response cancelled(String code);
Response error(String code, String message);
}
void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, BrokeredIdentityContext context);
void attachUserSession(UserSessionModel userSession, ClientSessionModel clientSession, BrokeredIdentityContext context);
void importNewUser(KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context);
void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, BrokeredIdentityContext context);
/**
* JAXRS callback endpoint for when the remote IDP wants to callback to keycloak.
*
* @return
*/
Object callback(RealmModel realm, AuthenticationCallback callback, EventBuilder event);
/**
* <p>Initiates the authentication process by sending an authentication request to an identity provider. This method is called
* only once during the authentication.</p>
*
* @param request The initial authentication request. Contains all the contextual information in order to build an authentication request to the
* identity provider.
* @return
*/
Response performLogin(AuthenticationRequest request);
/**
* <p>Returns a {@link javax.ws.rs.core.Response} containing the token previously stored during the authentication process for a
* specific user.</p>
*
* @param identity
* @return
*/
Response retrieveToken(FederatedIdentityModel identity);
void backchannelLogout(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm);
/**
* Called when a Keycloak application initiates a logout through the browser. This is expected to do a logout
* with the IDP
*
* @param userSession
* @param uriInfo
* @param realm
* @return null if this is not supported by this provider
*/
Response keycloakInitiatedBrowserLogout(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm);
/**
* Export a representation of the IdentityProvider in a specific format. For example, a SAML EntityDescriptor
*
* @return
*/
Response export(UriInfo uriInfo, RealmModel realm, String format);
/**
* Implementation of marshaller to serialize/deserialize attached data to Strings, which can be saved in clientSession
* @return
*/
IdentityProviderDataMarshaller getMarshaller();
}
@@ -0,0 +1,12 @@
package org.keycloak.broker.provider;
/**
*
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public interface IdentityProviderDataMarshaller {
String serialize(Object obj);
<T> T deserialize(String serialized, Class<T> clazz);
}
@@ -0,0 +1,58 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.provider;
import org.keycloak.models.IdentityProviderModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.provider.ProviderFactory;
import java.io.InputStream;
import java.util.Map;
/**
* @author Pedro Igor
*/
public interface IdentityProviderFactory<T extends IdentityProvider> extends ProviderFactory<T> {
/**
* <p>A friendly name for this factory.</p>
*
* @return
*/
String getName();
/**
* <p>Creates an {@link IdentityProvider} based on the configuration contained in
* <code>model</code>.</p>
*
* @param model The configuration to be used to create the identity provider.
* @return
*/
T create(IdentityProviderModel model);
/**
* <p>Creates an {@link IdentityProvider} based on the configuration from
* <code>inputStream</code>.</p>
*
* @param model The model containing the common abd basic configuration for an identity provider.
* @param inputStream The input stream from where configuration will be loaded from..
* @return
*/
Map<String, String> parseConfig(InputStream inputStream);
}
@@ -0,0 +1,58 @@
package org.keycloak.broker.provider;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.provider.ConfiguredProvider;
import org.keycloak.provider.Provider;
import org.keycloak.provider.ProviderFactory;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public interface IdentityProviderMapper extends Provider, ProviderFactory<IdentityProviderMapper>,ConfiguredProvider {
public static final String ANY_PROVIDER = "*";
String[] getCompatibleProviders();
String getDisplayCategory();
String getDisplayType();
/**
* Called to determine what keycloak username and email to use to process the login request from the external IDP.
* It's called before "FirstBrokerLogin" flow, so can be used to map attributes to BrokeredIdentityContext ( BrokeredIdentityContext.setUserAttribute ),
* which will be available on "Review Profile" page and in authenticators during FirstBrokerLogin flow
*
*
* @param session
* @param realm
* @param mapperModel
* @param context
*/
void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context);
/**
* Called after UserModel is created for first time for this user. Called after "FirstBrokerLogin" flow
*
* @param session
* @param realm
* @param user
* @param mapperModel
* @param context
*/
void importNewUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context);
/**
* Called when this user has logged in before and has already been imported.
*
* @param session
* @param realm
* @param user
* @param mapperModel
* @param context
*/
void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context);
}
@@ -0,0 +1,32 @@
package org.keycloak.broker.provider;
import org.keycloak.provider.Provider;
import org.keycloak.provider.ProviderFactory;
import org.keycloak.provider.Spi;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class IdentityProviderMapperSpi implements Spi {
@Override
public boolean isInternal() {
return true;
}
@Override
public String getName() {
return "identity-provider-mapper";
}
@Override
public Class<? extends Provider> getProviderClass() {
return IdentityProviderMapper.class;
}
@Override
public Class<? extends ProviderFactory> getProviderFactoryClass() {
return IdentityProviderMapper.class;
}
}
@@ -0,0 +1,50 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.provider;
import org.keycloak.provider.Provider;
import org.keycloak.provider.ProviderFactory;
import org.keycloak.provider.Spi;
/**
* @author Pedro Igor
*/
public class IdentityProviderSpi implements Spi {
public static final String IDENTITY_PROVIDER_SPI_NAME = "identity_provider";
@Override
public boolean isInternal() {
return false;
}
@Override
public String getName() {
return IDENTITY_PROVIDER_SPI_NAME;
}
@Override
public Class<? extends Provider> getProviderClass() {
return IdentityProvider.class;
}
@Override
public Class<? extends ProviderFactory> getProviderFactoryClass() {
return IdentityProviderFactory.class;
}
}
@@ -0,0 +1,264 @@
package org.keycloak.broker.provider.util;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSocketFactory;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.StringWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.GZIPInputStream;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
* @author Vlastimil Elias (velias at redhat dot com)
*/
public class SimpleHttp {
private String url;
private String method;
private Map<String, String> headers;
private Map<String, String> params;
private SSLSocketFactory sslFactory;
private HostnameVerifier hostnameVerifier;
protected SimpleHttp(String url, String method) {
this.url = url;
this.method = method;
}
public static SimpleHttp doGet(String url) {
return new SimpleHttp(url, "GET");
}
public static SimpleHttp doPost(String url) {
return new SimpleHttp(url, "POST");
}
public SimpleHttp header(String name, String value) {
if (headers == null) {
headers = new HashMap<String, String>();
}
headers.put(name, value);
return this;
}
public SimpleHttp param(String name, String value) {
if (params == null) {
params = new HashMap<String, String>();
}
params.put(name, value);
return this;
}
public SimpleHttp sslFactory(SSLSocketFactory factory) {
sslFactory = factory;
return this;
}
public SimpleHttp hostnameVerifier(HostnameVerifier verifier) {
hostnameVerifier = verifier;
return this;
}
public String asString() throws IOException {
boolean get = method.equals("GET");
boolean post = method.equals("POST");
StringBuilder sb = new StringBuilder();
if (get) {
sb.append(url);
}
if (params != null) {
boolean f = true;
for (Map.Entry<String, String> p : params.entrySet()) {
if (f) {
f = false;
if (get) {
sb.append("?");
}
} else {
sb.append("&");
}
sb.append(URLEncoder.encode(p.getKey(), "UTF-8"));
sb.append("=");
sb.append(URLEncoder.encode(p.getValue(), "UTF-8"));
}
}
if (get) {
url = sb.toString();
}
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
setupTruststoreIfApplicable(connection);
OutputStream os = null;
InputStream is = null;
try {
connection.setRequestMethod(method);
if (headers != null) {
for (Map.Entry<String, String> h : headers.entrySet()) {
connection.setRequestProperty(h.getKey(), h.getValue());
}
}
if (post) {
String data = sb.toString();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", String.valueOf(data.length()));
os = connection.getOutputStream();
os.write(data.getBytes());
} else {
connection.setDoOutput(false);
}
String ce = connection.getHeaderField("Content-Encoding");
is = connection.getInputStream();
if ("gzip".equals(ce)) {
is = new GZIPInputStream(is);
}
return toString(is);
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
}
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
if (connection != null) {
try {
connection.disconnect();
} catch (Exception e) {
}
}
}
}
public int asStatus() throws IOException {
boolean get = method.equals("GET");
boolean post = method.equals("POST");
StringBuilder sb = new StringBuilder();
if (get) {
sb.append(url);
}
if (params != null) {
boolean f = true;
for (Map.Entry<String, String> p : params.entrySet()) {
if (f) {
f = false;
if (get) {
sb.append("?");
}
} else {
sb.append("&");
}
sb.append(URLEncoder.encode(p.getKey(), "UTF-8"));
sb.append("=");
sb.append(URLEncoder.encode(p.getValue(), "UTF-8"));
}
}
if (get) {
url = sb.toString();
}
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
setupTruststoreIfApplicable(connection);
OutputStream os = null;
InputStream is = null;
try {
connection.setRequestMethod(method);
if (headers != null) {
for (Map.Entry<String, String> h : headers.entrySet()) {
connection.setRequestProperty(h.getKey(), h.getValue());
}
}
if (post) {
String data = sb.toString();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", String.valueOf(data.length()));
os = connection.getOutputStream();
os.write(data.getBytes());
} else {
connection.setDoOutput(false);
}
is = connection.getInputStream();
return connection.getResponseCode();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
}
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
}
}
if (connection != null) {
try {
connection.disconnect();
} catch (Exception e) {
}
}
}
}
private String toString(InputStream is) throws IOException {
InputStreamReader reader = new InputStreamReader(is);
StringWriter writer = new StringWriter();
char[] buffer = new char[1024 * 4];
for (int n = reader.read(buffer); n != -1; n = reader.read(buffer)) {
writer.write(buffer, 0, n);
}
return writer.toString();
}
private void setupTruststoreIfApplicable(HttpURLConnection connection) {
if (connection instanceof HttpsURLConnection && sslFactory != null) {
HttpsURLConnection con = (HttpsURLConnection) connection;
con.setSSLSocketFactory(sslFactory);
if (hostnameVerifier != null) {
con.setHostnameVerifier(hostnameVerifier);
}
}
}
}
@@ -0,0 +1,3 @@
org.keycloak.broker.provider.HardcodedRoleMapper
org.keycloak.broker.provider.HardcodedAttributeMapper
org.keycloak.broker.provider.HardcodedUserSessionAttributeMapper
@@ -0,0 +1,2 @@
org.keycloak.broker.provider.IdentityProviderSpi
org.keycloak.broker.provider.IdentityProviderMapperSpi
+58
View File
@@ -0,0 +1,58 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.8.0.Final</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-broker-oidc</artifactId>
<name>Keycloak Broker - OpenID Connect Identity Provider</name>
<description/>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-broker-core</artifactId>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-events-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-services</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,262 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.oidc;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.jboss.logging.Logger;
import org.keycloak.common.ClientConnection;
import org.keycloak.OAuth2Constants;
import org.keycloak.broker.provider.util.SimpleHttp;
import org.keycloak.broker.provider.AbstractIdentityProvider;
import org.keycloak.broker.provider.AuthenticationRequest;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.connections.truststore.JSSETruststoreConfigurator;
import org.keycloak.events.Errors;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.FederatedIdentityModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.services.ErrorPage;
import org.keycloak.services.messages.Messages;
import javax.ws.rs.GET;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import java.io.IOException;
import java.net.URI;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Pedro Igor
*/
public abstract class AbstractOAuth2IdentityProvider<C extends OAuth2IdentityProviderConfig> extends AbstractIdentityProvider<C> {
protected static final Logger logger = Logger.getLogger(AbstractOAuth2IdentityProvider.class);
public static final String OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE = "authorization_code";
public static final String FEDERATED_ACCESS_TOKEN = "FEDERATED_ACCESS_TOKEN";
public static final String FEDERATED_REFRESH_TOKEN = "FEDERATED_REFRESH_TOKEN";
public static final String FEDERATED_TOKEN_EXPIRATION = "FEDERATED_TOKEN_EXPIRATION";
public static final String ACCESS_DENIED = "access_denied";
protected static ObjectMapper mapper = new ObjectMapper();
public static final String OAUTH2_PARAMETER_ACCESS_TOKEN = "access_token";
public static final String OAUTH2_PARAMETER_SCOPE = "scope";
public static final String OAUTH2_PARAMETER_STATE = "state";
public static final String OAUTH2_PARAMETER_RESPONSE_TYPE = "response_type";
public static final String OAUTH2_PARAMETER_REDIRECT_URI = "redirect_uri";
public static final String OAUTH2_PARAMETER_CODE = "code";
public static final String OAUTH2_PARAMETER_CLIENT_ID = "client_id";
public static final String OAUTH2_PARAMETER_CLIENT_SECRET = "client_secret";
public static final String OAUTH2_PARAMETER_GRANT_TYPE = "grant_type";
public AbstractOAuth2IdentityProvider(C config) {
super(config);
if (config.getDefaultScope() == null || config.getDefaultScope().isEmpty()) {
config.setDefaultScope(getDefaultScopes());
}
}
@Override
public Object callback(RealmModel realm, AuthenticationCallback callback, EventBuilder event) {
return new Endpoint(callback, realm, event);
}
@Override
public Response performLogin(AuthenticationRequest request) {
try {
URI authorizationUrl = createAuthorizationUrl(request).build();
return Response.temporaryRedirect(authorizationUrl).build();
} catch (Exception e) {
throw new IdentityBrokerException("Could not create authentication request.", e);
}
}
@Override
public Response retrieveToken(FederatedIdentityModel identity) {
return Response.ok(identity.getToken()).build();
}
@Override
public C getConfig() {
return super.getConfig();
}
protected String extractTokenFromResponse(String response, String tokenName) {
if(response == null)
return null;
if (response.startsWith("{")) {
try {
JsonNode node = mapper.readTree(response);
if(node.has(tokenName)){
String s = node.get(tokenName).getTextValue();
if(s == null || s.trim().isEmpty())
return null;
return s;
} else {
return null;
}
} catch (IOException e) {
throw new IdentityBrokerException("Could not extract token [" + tokenName + "] from response [" + response + "] due: " + e.getMessage(), e);
}
} else {
Matcher matcher = Pattern.compile(tokenName + "=([^&]+)").matcher(response);
if (matcher.find()) {
return matcher.group(1);
}
}
return null;
}
protected BrokeredIdentityContext getFederatedIdentity(String response) {
String accessToken = extractTokenFromResponse(response, OAUTH2_PARAMETER_ACCESS_TOKEN);
if (accessToken == null) {
throw new IdentityBrokerException("No access token available in OAuth server response: " + response);
}
return doGetFederatedIdentity(accessToken);
}
protected BrokeredIdentityContext doGetFederatedIdentity(String accessToken) {
return null;
}
protected UriBuilder createAuthorizationUrl(AuthenticationRequest request) {
return UriBuilder.fromUri(getConfig().getAuthorizationUrl())
.queryParam(OAUTH2_PARAMETER_SCOPE, getConfig().getDefaultScope())
.queryParam(OAUTH2_PARAMETER_STATE, request.getState())
.queryParam(OAUTH2_PARAMETER_RESPONSE_TYPE, "code")
.queryParam(OAUTH2_PARAMETER_CLIENT_ID, getConfig().getClientId())
.queryParam(OAUTH2_PARAMETER_REDIRECT_URI, request.getRedirectUri());
}
/**
* Get JSON property as text. JSON numbers and booleans are converted to text. Empty string is converted to null.
*
* @param jsonNode to get property from
* @param name of property to get
* @return string value of the property or null.
*/
protected String getJsonProperty(JsonNode jsonNode, String name) {
if (jsonNode.has(name) && !jsonNode.get(name).isNull()) {
String s = jsonNode.get(name).asText();
if(s != null && !s.isEmpty())
return s;
else
return null;
}
return null;
}
protected JsonNode asJsonNode(String json) throws IOException {
return mapper.readTree(json);
}
protected abstract String getDefaultScopes();
protected class Endpoint {
protected AuthenticationCallback callback;
protected RealmModel realm;
protected EventBuilder event;
@Context
protected KeycloakSession session;
@Context
protected ClientConnection clientConnection;
@Context
protected HttpHeaders headers;
@Context
protected UriInfo uriInfo;
public Endpoint(AuthenticationCallback callback, RealmModel realm, EventBuilder event) {
this.callback = callback;
this.realm = realm;
this.event = event;
}
@GET
public Response authResponse(@QueryParam(AbstractOAuth2IdentityProvider.OAUTH2_PARAMETER_STATE) String state,
@QueryParam(AbstractOAuth2IdentityProvider.OAUTH2_PARAMETER_CODE) String authorizationCode,
@QueryParam(OAuth2Constants.ERROR) String error) {
if (error != null) {
//logger.error("Failed " + getConfig().getAlias() + " broker login: " + error);
if (error.equals(ACCESS_DENIED)) {
return callback.cancelled(state);
} else {
return callback.error(state, Messages.IDENTITY_PROVIDER_UNEXPECTED_ERROR);
}
}
try {
if (authorizationCode != null) {
String response = generateTokenRequest(authorizationCode).asString();
BrokeredIdentityContext federatedIdentity = getFederatedIdentity(response);
if (getConfig().isStoreToken()) {
federatedIdentity.setToken(response);
}
federatedIdentity.setCode(state);
federatedIdentity.setIdpConfig(getConfig());
federatedIdentity.setIdp(AbstractOAuth2IdentityProvider.this);
return callback.authenticated(federatedIdentity);
}
} catch (Exception e) {
logger.error("Failed to make identity provider oauth callback", e);
}
event.event(EventType.LOGIN);
event.error(Errors.IDENTITY_PROVIDER_LOGIN_FAILURE);
return ErrorPage.error(session, Messages.IDENTITY_PROVIDER_UNEXPECTED_ERROR);
}
public SimpleHttp generateTokenRequest(String authorizationCode) {
JSSETruststoreConfigurator configurator = new JSSETruststoreConfigurator(session);
return SimpleHttp.doPost(getConfig().getTokenUrl())
.param(OAUTH2_PARAMETER_CODE, authorizationCode)
.param(OAUTH2_PARAMETER_CLIENT_ID, getConfig().getClientId())
.param(OAUTH2_PARAMETER_CLIENT_SECRET, getConfig().getClientSecret())
.param(OAUTH2_PARAMETER_REDIRECT_URI, uriInfo.getAbsolutePath().toString())
.param(OAUTH2_PARAMETER_GRANT_TYPE, OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE)
.sslFactory(configurator.getSSLSocketFactory())
.hostnameVerifier(configurator.getHostnameVerifier());
}
}
}
@@ -0,0 +1,121 @@
package org.keycloak.broker.oidc;
import org.keycloak.broker.provider.util.SimpleHttp;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.constants.AdapterConstants;
import org.keycloak.events.EventBuilder;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.jose.jws.JWSInputException;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.representations.JsonWebToken;
import org.keycloak.representations.adapters.action.AdminAction;
import org.keycloak.representations.adapters.action.LogoutAction;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.util.JsonSerialization;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import java.io.IOException;
import java.security.PublicKey;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class KeycloakOIDCIdentityProvider extends OIDCIdentityProvider {
public static final String VALIDATED_ACCESS_TOKEN = "VALIDATED_ACCESS_TOKEN";
public KeycloakOIDCIdentityProvider(OIDCIdentityProviderConfig config) {
super(config);
}
@Override
public Object callback(RealmModel realm, AuthenticationCallback callback, EventBuilder event) {
return new KeycloakEndpoint(callback, realm, event);
}
@Override
protected void processAccessTokenResponse(BrokeredIdentityContext context, PublicKey idpKey, AccessTokenResponse response) {
JsonWebToken access = validateToken(idpKey, response.getToken());
context.getContextData().put(VALIDATED_ACCESS_TOKEN, access);
}
protected class KeycloakEndpoint extends OIDCEndpoint {
public KeycloakEndpoint(AuthenticationCallback callback, RealmModel realm, EventBuilder event) {
super(callback, realm, event);
}
@POST
@Path(AdapterConstants.K_LOGOUT)
public Response backchannelLogout(String input) {
JWSInput token = null;
try {
token = new JWSInput(input);
} catch (JWSInputException e) {
logger.warn("Failed to verify logout request");
return Response.status(400).build();
}
PublicKey key = getExternalIdpKey();
if (key != null) {
if (!verify(token, key)) {
logger.warn("Failed to verify logout request");
return Response.status(400).build();
}
}
LogoutAction action = null;
try {
action = JsonSerialization.readValue(token.getContent(), LogoutAction.class);
} catch (IOException e) {
throw new RuntimeException(e);
}
if (!validateAction(action)) return Response.status(400).build();
if (action.getKeycloakSessionIds() != null) {
for (String sessionId : action.getKeycloakSessionIds()) {
String brokerSessionId = getConfig().getAlias() + "." + sessionId;
UserSessionModel userSession = session.sessions().getUserSessionByBrokerSessionId(realm, brokerSessionId);
if (userSession != null
&& userSession.getState() != UserSessionModel.State.LOGGING_OUT
&& userSession.getState() != UserSessionModel.State.LOGGED_OUT
) {
AuthenticationManager.backchannelLogout(session, realm, userSession, uriInfo, clientConnection, headers, false);
}
}
}
return Response.ok().build();
}
protected boolean validateAction(AdminAction action) {
if (!action.validate()) {
logger.warn("admin request failed, not validated" + action.getAction());
return false;
}
if (action.isExpired()) {
logger.warn("admin request failed, expired token");
return false;
}
if (!getConfig().getClientId().equals(action.getResource())) {
logger.warn("Resource name does not match");
return false;
}
return true;
}
@Override
public SimpleHttp generateTokenRequest(String authorizationCode) {
return super.generateTokenRequest(authorizationCode)
.param(AdapterConstants.CLIENT_SESSION_STATE, "n/a"); // hack to get backchannel logout to work
}
}
}
@@ -0,0 +1,59 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.oidc;
import org.keycloak.broker.oidc.mappers.UsernameTemplateMapper;
import org.keycloak.broker.provider.AbstractIdentityProviderFactory;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.IdentityProviderModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* @author Pedro Igor
*/
public class KeycloakOIDCIdentityProviderFactory extends AbstractIdentityProviderFactory<KeycloakOIDCIdentityProvider> {
public static final String PROVIDER_ID = "keycloak-oidc";
@Override
public String getName() {
return "Keycloak OpenID Connect";
}
@Override
public KeycloakOIDCIdentityProvider create(IdentityProviderModel model) {
return new KeycloakOIDCIdentityProvider(new OIDCIdentityProviderConfig(model));
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public Map<String, String> parseConfig(InputStream inputStream) {
return OIDCIdentityProviderFactory.parseOIDCConfig(inputStream);
}
}
@@ -0,0 +1,78 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.oidc;
import org.keycloak.models.IdentityProviderModel;
/**
* @author Pedro Igor
*/
public class OAuth2IdentityProviderConfig extends IdentityProviderModel {
public OAuth2IdentityProviderConfig(IdentityProviderModel model) {
super(model);
}
public String getAuthorizationUrl() {
return getConfig().get("authorizationUrl");
}
public void setAuthorizationUrl(String authorizationUrl) {
getConfig().put("authorizationUrl", authorizationUrl);
}
public String getTokenUrl() {
return getConfig().get("tokenUrl");
}
public void setTokenUrl(String tokenUrl) {
getConfig().put("tokenUrl", tokenUrl);
}
public String getUserInfoUrl() {
return getConfig().get("userInfoUrl");
}
public void setUserInfoUrl(String userInfoUrl) {
getConfig().put("userInfoUrl", userInfoUrl);
}
public String getClientId() {
return getConfig().get("clientId");
}
public void setClientId(String clientId) {
getConfig().put("clientId", clientId);
}
public String getClientSecret() {
return getConfig().get("clientSecret");
}
public void setClientSecret(String clientSecret) {
getConfig().put("clientSecret", clientSecret);
}
public String getDefaultScope() {
return getConfig().get("defaultScope");
}
public void setDefaultScope(String defaultScope) {
getConfig().put("defaultScope", defaultScope);
}
}
@@ -0,0 +1,334 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.oidc;
import org.codehaus.jackson.JsonNode;
import org.jboss.logging.Logger;
import org.keycloak.broker.oidc.mappers.AbstractJsonUserAttributeMapper;
import org.keycloak.broker.oidc.util.JsonSimpleHttp;
import org.keycloak.broker.provider.util.SimpleHttp;
import org.keycloak.broker.provider.AuthenticationRequest;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.events.Errors;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.jose.jws.JWSInputException;
import org.keycloak.jose.jws.crypto.RSAProvider;
import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.representations.IDToken;
import org.keycloak.representations.JsonWebToken;
import org.keycloak.services.ErrorPage;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.messages.Messages;
import org.keycloak.services.resources.IdentityBrokerService;
import org.keycloak.services.resources.RealmsResource;
import org.keycloak.util.JsonSerialization;
import org.keycloak.common.util.PemUtils;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import java.io.IOException;
import java.security.PublicKey;
/**
* @author Pedro Igor
*/
public class OIDCIdentityProvider extends AbstractOAuth2IdentityProvider<OIDCIdentityProviderConfig> {
protected static final Logger logger = Logger.getLogger(OIDCIdentityProvider.class);
public static final String OAUTH2_PARAMETER_PROMPT = "prompt";
public static final String SCOPE_OPENID = "openid";
public static final String FEDERATED_ID_TOKEN = "FEDERATED_ID_TOKEN";
public static final String USER_INFO = "UserInfo";
public static final String FEDERATED_ACCESS_TOKEN_RESPONSE = "FEDERATED_ACCESS_TOKEN_RESPONSE";
public static final String VALIDATED_ID_TOKEN = "VALIDATED_ID_TOKEN";
public OIDCIdentityProvider(OIDCIdentityProviderConfig config) {
super(config);
String defaultScope = config.getDefaultScope();
if (!defaultScope.contains(SCOPE_OPENID)) {
config.setDefaultScope(SCOPE_OPENID + " " + defaultScope);
}
}
@Override
public Object callback(RealmModel realm, AuthenticationCallback callback, EventBuilder event) {
return new OIDCEndpoint(callback, realm, event);
}
protected PublicKey getExternalIdpKey() {
String signingCert = getConfig().getCertificateSignatureVerifier();
try {
if (signingCert != null && !signingCert.trim().equals("")) {
return PemUtils.decodeCertificate(signingCert).getPublicKey();
} else if (getConfig().getPublicKeySignatureVerifier() != null && !getConfig().getPublicKeySignatureVerifier().trim().equals("")) {
return PemUtils.decodePublicKey(getConfig().getPublicKeySignatureVerifier());
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return null;
}
protected class OIDCEndpoint extends Endpoint {
public OIDCEndpoint(AuthenticationCallback callback, RealmModel realm, EventBuilder event) {
super(callback, realm, event);
}
@GET
@Path("logout_response")
public Response logoutResponse(@Context UriInfo uriInfo,
@QueryParam("state") String state) {
UserSessionModel userSession = session.sessions().getUserSession(realm, state);
if (userSession == null) {
logger.error("no valid user session");
EventBuilder event = new EventBuilder(realm, session, clientConnection);
event.event(EventType.LOGOUT);
event.error(Errors.USER_SESSION_NOT_FOUND);
return ErrorPage.error(session, Messages.IDENTITY_PROVIDER_UNEXPECTED_ERROR);
}
if (userSession.getState() != UserSessionModel.State.LOGGING_OUT) {
logger.error("usersession in different state");
EventBuilder event = new EventBuilder(realm, session, clientConnection);
event.event(EventType.LOGOUT);
event.error(Errors.USER_SESSION_NOT_FOUND);
return ErrorPage.error(session, Messages.SESSION_NOT_ACTIVE);
}
return AuthenticationManager.finishBrowserLogout(session, realm, userSession, uriInfo, clientConnection, headers);
}
}
@Override
public void backchannelLogout(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm) {
if (getConfig().getLogoutUrl() == null || getConfig().getLogoutUrl().trim().equals("") || !getConfig().isBackchannelSupported()) return;
String idToken = userSession.getNote(FEDERATED_ID_TOKEN);
if (idToken == null) return;
backchannelLogout(userSession, idToken);
}
protected void backchannelLogout(UserSessionModel userSession, String idToken) {
String sessionId = userSession.getId();
UriBuilder logoutUri = UriBuilder.fromUri(getConfig().getLogoutUrl())
.queryParam("state", sessionId);
logoutUri.queryParam("id_token_hint", idToken);
String url = logoutUri.build().toString();
try {
int status = JsonSimpleHttp.doGet(url).asStatus();
boolean success = status >=200 && status < 400;
if (!success) {
logger.warn("Failed backchannel broker logout to: " + url);
}
} catch (Exception e) {
logger.warn("Failed backchannel broker logout to: " + url, e);
}
}
@Override
public Response keycloakInitiatedBrowserLogout(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm) {
if (getConfig().getLogoutUrl() == null || getConfig().getLogoutUrl().trim().equals("")) return null;
String idToken = userSession.getNote(FEDERATED_ID_TOKEN);
if (idToken != null && getConfig().isBackchannelSupported()) {
backchannelLogout(userSession, idToken);
return null;
} else {
String sessionId = userSession.getId();
UriBuilder logoutUri = UriBuilder.fromUri(getConfig().getLogoutUrl())
.queryParam("state", sessionId);
if (idToken != null) logoutUri.queryParam("id_token_hint", idToken);
String redirect = RealmsResource.brokerUrl(uriInfo)
.path(IdentityBrokerService.class, "getEndpoint")
.path(OIDCEndpoint.class, "logoutResponse")
.build(realm.getName(), getConfig().getAlias()).toString();
logoutUri.queryParam("post_logout_redirect_uri", redirect);
Response response = Response.status(302).location(logoutUri.build()).build();
return response;
}
}
@Override
protected UriBuilder createAuthorizationUrl(AuthenticationRequest request) {
UriBuilder authorizationUrl = super.createAuthorizationUrl(request);
String prompt = getConfig().getPrompt();
if (prompt != null && !prompt.isEmpty()) {
authorizationUrl.queryParam(OAUTH2_PARAMETER_PROMPT, prompt);
}
return authorizationUrl;
}
protected void processAccessTokenResponse(BrokeredIdentityContext context, PublicKey idpKey, AccessTokenResponse response) {
}
@Override
protected BrokeredIdentityContext getFederatedIdentity(String response) {
AccessTokenResponse tokenResponse = null;
try {
tokenResponse = JsonSerialization.readValue(response, AccessTokenResponse.class);
} catch (IOException e) {
throw new IdentityBrokerException("Could not decode access token response.", e);
}
PublicKey key = getExternalIdpKey();
String accessToken = verifyAccessToken(key, tokenResponse);
String encodedIdToken = tokenResponse.getIdToken();
JsonWebToken idToken = validateToken(key, encodedIdToken);
try {
String id = idToken.getSubject();
BrokeredIdentityContext identity = new BrokeredIdentityContext(id);
String name = (String)idToken.getOtherClaims().get(IDToken.NAME);
String preferredUsername = (String)idToken.getOtherClaims().get(IDToken.PREFERRED_USERNAME);
String email = (String)idToken.getOtherClaims().get(IDToken.EMAIL);
if (getConfig().getUserInfoUrl() != null && (id == null || name == null || preferredUsername == null || email == null) ) {
SimpleHttp request = JsonSimpleHttp.doGet(getConfig().getUserInfoUrl())
.header("Authorization", "Bearer " + accessToken);
JsonNode userInfo = JsonSimpleHttp.asJson(request);
id = getJsonProperty(userInfo, "sub");
name = getJsonProperty(userInfo, "name");
preferredUsername = getJsonProperty(userInfo, "preferred_username");
email = getJsonProperty(userInfo, "email");
AbstractJsonUserAttributeMapper.storeUserProfileForMapper(identity, userInfo, getConfig().getAlias());
}
identity.getContextData().put(FEDERATED_ACCESS_TOKEN_RESPONSE, tokenResponse);
identity.getContextData().put(VALIDATED_ID_TOKEN, idToken);
processAccessTokenResponse(identity, key, tokenResponse);
identity.setId(id);
identity.setName(name);
identity.setEmail(email);
identity.setBrokerUserId(getConfig().getAlias() + "." + id);
if (tokenResponse.getSessionState() != null) {
identity.setBrokerSessionId(getConfig().getAlias() + "." + tokenResponse.getSessionState());
}
if (preferredUsername == null) {
preferredUsername = email;
}
if (preferredUsername == null) {
preferredUsername = id;
}
identity.setUsername(preferredUsername);
if (getConfig().isStoreToken()) {
identity.setToken(response);
}
return identity;
} catch (Exception e) {
throw new IdentityBrokerException("Could not fetch attributes from userinfo endpoint.", e);
}
}
private String verifyAccessToken(PublicKey key, AccessTokenResponse tokenResponse) {
String accessToken = tokenResponse.getToken();
if (accessToken == null) {
throw new IdentityBrokerException("No access_token from server.");
}
return accessToken;
}
protected boolean verify(JWSInput jws, PublicKey key) {
if (key == null) return true;
if (!getConfig().isValidateSignature()) return true;
return RSAProvider.verify(jws, key);
}
protected JsonWebToken validateToken(PublicKey key, String encodedToken) {
if (encodedToken == null) {
throw new IdentityBrokerException("No token from server.");
}
JsonWebToken token;
try {
JWSInput jws = new JWSInput(encodedToken);
if (!verify(jws, key)) {
throw new IdentityBrokerException("token signature validation failed");
}
token = jws.readJsonContent(JsonWebToken.class);
} catch (JWSInputException e) {
throw new IdentityBrokerException("Invalid token", e);
}
String iss = token.getIssuer();
if (!token.hasAudience(getConfig().getClientId())) {
throw new IdentityBrokerException("Wrong audience from token.");
}
if (!token.isActive()) {
throw new IdentityBrokerException("Token is no longer valid");
}
String trustedIssuers = getConfig().getIssuer();
if (trustedIssuers != null) {
String[] issuers = trustedIssuers.split(",");
for (String trustedIssuer : issuers) {
if (iss != null && iss.equals(trustedIssuer.trim())) {
return token;
}
}
throw new IdentityBrokerException("Wrong issuer from token. Got: " + iss + " expected: " + getConfig().getIssuer());
}
return token;
}
@Override
public void attachUserSession(UserSessionModel userSession, ClientSessionModel clientSession, BrokeredIdentityContext context) {
AccessTokenResponse tokenResponse = (AccessTokenResponse)context.getContextData().get(FEDERATED_ACCESS_TOKEN_RESPONSE);
userSession.setNote(FEDERATED_ACCESS_TOKEN, tokenResponse.getToken());
userSession.setNote(FEDERATED_ID_TOKEN, tokenResponse.getIdToken());
}
@Override
protected String getDefaultScopes() {
return "openid";
}
}
@@ -0,0 +1,84 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.oidc;
import org.keycloak.models.IdentityProviderModel;
/**
* @author Pedro Igor
*/
public class OIDCIdentityProviderConfig extends OAuth2IdentityProviderConfig {
public OIDCIdentityProviderConfig(IdentityProviderModel identityProviderModel) {
super(identityProviderModel);
}
public String getPrompt() {
return getConfig().get("prompt");
}
public void setPrompt(String prompt) {
getConfig().put("prompt", prompt);
}
public String getIssuer() {
return getConfig().get("issuer");
}
public void setIssuer(String issuer) {
getConfig().put("issuer", issuer);
}
public String getLogoutUrl() {
return getConfig().get("logoutUrl");
}
public void setLogoutUrl(String url) {
getConfig().put("logoutUrl", url);
}
public String getCertificateSignatureVerifier() {
return getConfig().get("certificateSignatureVerifier");
}
public void setCertificateSignatureVerifier(String signingCertificate) {
getConfig().put("certificateSignatureVerifier", signingCertificate);
}
public String getPublicKeySignatureVerifier() {
return getConfig().get("publicKeySignatureVerifier");
}
public void setPublicKeySignatureVerifier(String signingCertificate) {
getConfig().put("publicKeySignatureVerifier", signingCertificate);
}
public boolean isValidateSignature() {
return Boolean.valueOf(getConfig().get("validateSignature"));
}
public void setValidateSignature(boolean validateSignature) {
getConfig().put("validateSignature", String.valueOf(validateSignature));
}
public boolean isBackchannelSupported() {
return Boolean.valueOf(getConfig().get("backchannelSupported"));
}
public void setBackchannelSupported(boolean backchannel) {
getConfig().put("backchannelSupported", String.valueOf(backchannel));
}
}
@@ -0,0 +1,108 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.oidc;
import org.keycloak.broker.oidc.mappers.UsernameTemplateMapper;
import org.keycloak.broker.provider.util.SimpleHttp;
import org.keycloak.broker.provider.AbstractIdentityProviderFactory;
import org.keycloak.jose.jwk.JWK;
import org.keycloak.jose.jwk.JWKParser;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.IdentityProviderModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.utils.KeycloakModelUtils;
import org.keycloak.protocol.oidc.representations.JSONWebKeySet;
import org.keycloak.protocol.oidc.representations.OIDCConfigurationRepresentation;
import org.keycloak.util.JsonSerialization;
import java.io.IOException;
import java.io.InputStream;
import java.security.PublicKey;
import java.util.HashMap;
import java.util.Map;
/**
* @author Pedro Igor
*/
public class OIDCIdentityProviderFactory extends AbstractIdentityProviderFactory<OIDCIdentityProvider> {
public static final String PROVIDER_ID = "oidc";
@Override
public String getName() {
return "OpenID Connect v1.0";
}
@Override
public OIDCIdentityProvider create(IdentityProviderModel model) {
return new OIDCIdentityProvider(new OIDCIdentityProviderConfig(model));
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public Map<String, String> parseConfig(InputStream inputStream) {
return parseOIDCConfig(inputStream);
}
protected static Map<String, String> parseOIDCConfig(InputStream inputStream) {
OIDCConfigurationRepresentation rep = null;
try {
rep = JsonSerialization.readValue(inputStream, OIDCConfigurationRepresentation.class);
} catch (IOException e) {
throw new RuntimeException("failed to load openid connect metadata", e);
}
OIDCIdentityProviderConfig config = new OIDCIdentityProviderConfig(new IdentityProviderModel());
config.setIssuer(rep.getIssuer());
config.setLogoutUrl(rep.getLogoutEndpoint());
config.setAuthorizationUrl(rep.getAuthorizationEndpoint());
config.setTokenUrl(rep.getTokenEndpoint());
config.setUserInfoUrl(rep.getUserinfoEndpoint());
if (rep.getJwksUri() != null) {
String uri = rep.getJwksUri();
String keySetString = null;
try {
keySetString = SimpleHttp.doGet(uri).asString();
JSONWebKeySet keySet = JsonSerialization.readValue(keySetString, JSONWebKeySet.class);
for (JWK jwk : keySet.getKeys()) {
JWKParser parse = JWKParser.create(jwk);
if (parse.getJwk().getPublicKeyUse().equals(JWK.SIG_USE) && keyTypeSupported(jwk.getKeyType())) {
PublicKey key = parse.toPublicKey();
config.setPublicKeySignatureVerifier(KeycloakModelUtils.getPemFromKey(key));
config.setValidateSignature(true);
break;
}
}
} catch (IOException e) {
throw new RuntimeException("Failed to query JWKSet from: " + uri, e);
}
}
return config.getConfig();
}
protected static boolean keyTypeSupported(String type) {
return type != null && type.equals("RSA");
}
}
@@ -0,0 +1,97 @@
package org.keycloak.broker.oidc.mappers;
import org.keycloak.broker.oidc.KeycloakOIDCIdentityProvider;
import org.keycloak.broker.provider.AbstractIdentityProviderMapper;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.provider.ProviderConfigProperty;
import org.keycloak.representations.JsonWebToken;
import java.util.List;
import java.util.Map;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public abstract class AbstractClaimMapper extends AbstractIdentityProviderMapper {
public static final String CLAIM = "claim";
public static final String CLAIM_VALUE = "claim.value";
public static Object getClaimValue(JsonWebToken token, String claim) {
String[] split = claim.split("\\.");
Map<String, Object> jsonObject = token.getOtherClaims();
for (int i = 0; i < split.length; i++) {
if (i == split.length - 1) {
return jsonObject.get(split[i]);
} else {
Object val = jsonObject.get(split[i]);
if (!(val instanceof Map)) return null;
jsonObject = (Map<String, Object>)val;
}
}
return null;
}
public static Object getClaimValue(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String claim = mapperModel.getConfig().get(CLAIM);
return getClaimValue(context, claim);
}
public static Object getClaimValue(BrokeredIdentityContext context, String claim) {
{ // search access token
JsonWebToken token = (JsonWebToken)context.getContextData().get(KeycloakOIDCIdentityProvider.VALIDATED_ACCESS_TOKEN);
if (token != null) {
Object value = getClaimValue(token, claim);
if (value != null) return value;
}
}
{ // search ID Token
JsonWebToken token = (JsonWebToken)context.getContextData().get(KeycloakOIDCIdentityProvider.VALIDATED_ID_TOKEN);
if (token != null) {
Object value = getClaimValue(token, claim);
if (value != null) return value;
}
}
return null;
}
protected boolean hasClaimValue(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
Object value = getClaimValue(mapperModel, context);
String desiredValue = mapperModel.getConfig().get(CLAIM_VALUE);
return valueEquals(desiredValue, value);
}
public boolean valueEquals(String desiredValue, Object value) {
if (value instanceof String) {
if (desiredValue.equals(value)) return true;
} else if (value instanceof Double) {
try {
if (Double.valueOf(desiredValue).equals(value)) return true;
} catch (Exception e) {
}
} else if (value instanceof Integer) {
try {
if (Integer.valueOf(desiredValue).equals(value)) return true;
} catch (Exception e) {
}
} else if (value instanceof Boolean) {
try {
if (Boolean.valueOf(desiredValue).equals(value)) return true;
} catch (Exception e) {
}
} else if (value instanceof List) {
List list = (List)value;
for (Object val : list) {
if (valueEquals(desiredValue, val)) return true;
}
}
return false;
}
}
@@ -0,0 +1,206 @@
package org.keycloak.broker.oidc.mappers;
import java.util.ArrayList;
import java.util.List;
import org.codehaus.jackson.JsonNode;
import org.jboss.logging.Logger;
import org.keycloak.broker.oidc.OIDCIdentityProvider;
import org.keycloak.broker.provider.AbstractIdentityProviderMapper;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.provider.ProviderConfigProperty;
/**
* Abstract class for Social Provider mappers which allow mapping of JSON user profile field into Keycloak user
* attribute. Concrete mapper classes with own ID and provider mapping must be implemented for each social provider who
* uses {@link JsonNode} user profile.
*
* @author Vlastimil Elias (velias at redhat dot com)
*/
public abstract class AbstractJsonUserAttributeMapper extends AbstractIdentityProviderMapper {
protected static final Logger logger = Logger.getLogger(AbstractJsonUserAttributeMapper.class);
protected static final Logger LOGGER_DUMP_USER_PROFILE = Logger.getLogger("org.keycloak.social.user_profile_dump");
private static final String JSON_PATH_DELIMITER = ".";
/**
* Config param where name of mapping source JSON User Profile field is stored.
*/
public static final String CONF_JSON_FIELD = "jsonField";
/**
* Config param where name of mapping target USer attribute is stored.
*/
public static final String CONF_USER_ATTRIBUTE = "userAttribute";
/**
* Key in {@link BrokeredIdentityContext#getContextData()} where {@link JsonNode} with user profile is stored.
*/
public static final String CONTEXT_JSON_NODE = OIDCIdentityProvider.USER_INFO;
private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
static {
ProviderConfigProperty property;
ProviderConfigProperty property1;
property1 = new ProviderConfigProperty();
property1.setName(CONF_JSON_FIELD);
property1.setLabel("Social Profile JSON Field Path");
property1.setHelpText("Path of field in Social provider User Profile JSON data to get value from. You can use dot notation for nesting and square brackets for array index. Eg. 'contact.address[0].country'.");
property1.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property1);
property = new ProviderConfigProperty();
property.setName(CONF_USER_ATTRIBUTE);
property.setLabel("User Attribute Name");
property.setHelpText("User attribute name to store information into.");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
}
/**
* Store used profile JsonNode into user context for later use by this mapper. Profile data are dumped into special logger if enabled also to allow investigation of the structure.
*
* @param user context to store profile data into
* @param profile to store into context
* @param provider identification of social provider to be used in log dump
*
* @see #preprocessFederatedIdentity(KeycloakSession, RealmModel, IdentityProviderMapperModel, BrokeredIdentityContext)
* @see BrokeredIdentityContext#getContextData()
*/
public static void storeUserProfileForMapper(BrokeredIdentityContext user, JsonNode profile, String provider) {
user.getContextData().put(AbstractJsonUserAttributeMapper.CONTEXT_JSON_NODE, profile);
if (LOGGER_DUMP_USER_PROFILE.isDebugEnabled())
LOGGER_DUMP_USER_PROFILE.debug("User Profile JSON Data for provider "+provider+": " + profile);
}
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getDisplayCategory() {
return "Attribute Importer";
}
@Override
public String getDisplayType() {
return "Attribute Importer";
}
@Override
public String getHelpText() {
return "Import user profile information if it exists in Social provider JSON data into the specified user attribute.";
}
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(CONF_USER_ATTRIBUTE);
if (attribute == null || attribute.trim().isEmpty()) {
logger.warnf("Attribute is not configured for mapper %s", mapperModel.getName());
return;
}
attribute = attribute.trim();
String value = getJsonValue(mapperModel, context);
if (value != null) {
context.setUserAttribute(attribute, value);
}
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
// we do not update user profile from social provider
}
protected static String getJsonValue(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String jsonField = mapperModel.getConfig().get(CONF_JSON_FIELD);
if (jsonField == null || jsonField.trim().isEmpty()) {
logger.warnf("JSON field path is not configured for mapper %s", mapperModel.getName());
return null;
}
jsonField = jsonField.trim();
if (jsonField.startsWith(JSON_PATH_DELIMITER) || jsonField.endsWith(JSON_PATH_DELIMITER) || jsonField.startsWith("[")) {
logger.warnf("JSON field path is invalid %s", jsonField);
return null;
}
JsonNode profileJsonNode = (JsonNode) context.getContextData().get(CONTEXT_JSON_NODE);
String value = getJsonValue(profileJsonNode, jsonField);
if (value == null) {
logger.debugf("User profile JSON value '%s' is not available.", jsonField);
}
return value;
}
protected static String getJsonValue(JsonNode baseNode, String fieldPath) {
logger.debug("Going to process JsonNode path " + fieldPath + " on data " + baseNode);
if (baseNode != null) {
int idx = fieldPath.indexOf(JSON_PATH_DELIMITER);
String currentFieldName = fieldPath;
if (idx > 0) {
currentFieldName = fieldPath.substring(0, idx).trim();
if (currentFieldName.isEmpty()) {
logger.debug("JSON path is invalid " + fieldPath);
return null;
}
}
String currentNodeName = currentFieldName;
int arrayIndex = -1;
if (currentFieldName.endsWith("]")) {
int bi = currentFieldName.indexOf("[");
if (bi == -1) {
logger.debug("Invalid array index construct in " + currentFieldName);
return null;
}
try {
String is = currentFieldName.substring(bi+1, currentFieldName.length() - 1).trim();
arrayIndex = Integer.parseInt(is);
} catch (Exception e) {
logger.debug("Invalid array index construct in " + currentFieldName);
return null;
}
currentNodeName = currentFieldName.substring(0,bi).trim();
}
JsonNode currentNode = baseNode.get(currentNodeName);
if (arrayIndex > -1 && currentNode.isArray()) {
logger.debug("Going to take array node at index " + arrayIndex);
currentNode = currentNode.get(arrayIndex);
}
if (currentNode == null) {
logger.debug("JsonNode not found for name " + currentFieldName);
return null;
}
if (idx < 0) {
if (!currentNode.isValueNode()) {
logger.debug("JsonNode is not value node for name " + currentFieldName);
return null;
}
String ret = currentNode.asText();
if (ret != null && !ret.trim().isEmpty())
return ret.trim();
} else {
return getJsonValue(currentNode, fieldPath.substring(idx + 1));
}
}
return null;
}
}
@@ -0,0 +1,106 @@
package org.keycloak.broker.oidc.mappers;
import org.keycloak.broker.oidc.KeycloakOIDCIdentityProviderFactory;
import org.keycloak.broker.oidc.OIDCIdentityProviderFactory;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.HardcodedRoleMapper;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.KeycloakModelUtils;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class ClaimToRoleMapper extends AbstractClaimMapper {
public static final String[] COMPATIBLE_PROVIDERS = {KeycloakOIDCIdentityProviderFactory.PROVIDER_ID, OIDCIdentityProviderFactory.PROVIDER_ID};
private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
static {
ProviderConfigProperty property;
ProviderConfigProperty property1;
property1 = new ProviderConfigProperty();
property1.setName(CLAIM);
property1.setLabel("Claim");
property1.setHelpText("Name of claim to search for in token. You can reference nested claims using a '.', i.e. 'address.locality'.");
property1.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property1);
property1 = new ProviderConfigProperty();
property1.setName(CLAIM_VALUE);
property1.setLabel("Claim Value");
property1.setHelpText("Value the claim must have. If the claim is an array, then the value must be contained in the array.");
property1.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property1);
property = new ProviderConfigProperty();
property.setName(HardcodedRoleMapper.ROLE);
property.setLabel("Role");
property.setHelpText("Role to grant to user if claim is present. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference an application role the syntax is appname.approle, i.e. myapp.myrole");
property.setType(ProviderConfigProperty.ROLE_TYPE);
configProperties.add(property);
}
public static final String PROVIDER_ID = "oidc-role-idp-mapper";
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public String getDisplayCategory() {
return "Role Importer";
}
@Override
public String getDisplayType() {
return "Claim to Role";
}
@Override
public void importNewUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String roleName = mapperModel.getConfig().get(HardcodedRoleMapper.ROLE);
if (hasClaimValue(mapperModel, context)) {
RoleModel role = KeycloakModelUtils.getRoleFromString(realm, roleName);
if (role == null) throw new IdentityBrokerException("Unable to find role: " + roleName);
user.grantRole(role);
}
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String roleName = mapperModel.getConfig().get(HardcodedRoleMapper.ROLE);
if (!hasClaimValue(mapperModel, context)) {
RoleModel role = KeycloakModelUtils.getRoleFromString(realm, roleName);
if (role == null) throw new IdentityBrokerException("Unable to find role: " + roleName);
user.deleteRoleMapping(role);
}
}
@Override
public String getHelpText() {
return "If a claim exists, grant the user the specified realm or application role.";
}
}
@@ -0,0 +1,119 @@
package org.keycloak.broker.oidc.mappers;
import org.keycloak.broker.oidc.KeycloakOIDCIdentityProvider;
import org.keycloak.broker.oidc.KeycloakOIDCIdentityProviderFactory;
import org.keycloak.broker.oidc.OIDCIdentityProviderFactory;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.HardcodedRoleMapper;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.KeycloakModelUtils;
import org.keycloak.provider.ProviderConfigProperty;
import org.keycloak.representations.JsonWebToken;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class ExternalKeycloakRoleToRoleMapper extends AbstractClaimMapper {
public static final String[] COMPATIBLE_PROVIDERS = {KeycloakOIDCIdentityProviderFactory.PROVIDER_ID};
private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
private static final String EXTERNAL_ROLE = "external.role";
static {
ProviderConfigProperty property;
ProviderConfigProperty property1;
property1 = new ProviderConfigProperty();
property1.setName(EXTERNAL_ROLE);
property1.setLabel("External role");
property1.setHelpText("External role to check for. To reference an application role the syntax is appname.approle, i.e. myapp.myrole.");
property1.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property1);
property = new ProviderConfigProperty();
property.setName(HardcodedRoleMapper.ROLE);
property.setLabel("Role");
property.setHelpText("Role to grant to user if external role is present. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference an application role the syntax is appname.approle, i.e. myapp.myrole");
property.setType(ProviderConfigProperty.ROLE_TYPE);
configProperties.add(property);
}
public static final String PROVIDER_ID = "keycloak-oidc-role-to-role-idp-mapper";
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public String getDisplayCategory() {
return "Role Importer";
}
@Override
public String getDisplayType() {
return "External Role to Role";
}
@Override
public void importNewUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
RoleModel role = hasRole(realm, mapperModel, context);
if (role != null) {
user.grantRole(role);
}
}
private RoleModel hasRole(RealmModel realm,IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
JsonWebToken token = (JsonWebToken)context.getContextData().get(KeycloakOIDCIdentityProvider.VALIDATED_ACCESS_TOKEN);
//if (token == null) return;
String roleName = mapperModel.getConfig().get(HardcodedRoleMapper.ROLE);
String[] parseRole = KeycloakModelUtils.parseRole(mapperModel.getConfig().get(EXTERNAL_ROLE));
String externalRoleName = parseRole[1];
String claimName = null;
if (parseRole[0] == null) {
claimName = "realm_access.roles";
} else {
claimName = "resource_access." + parseRole[0] + ".roles";
}
Object claim = getClaimValue(token, claimName);
if (valueEquals(externalRoleName, claim)) {
RoleModel role = KeycloakModelUtils.getRoleFromString(realm, roleName);
if (role == null) throw new IdentityBrokerException("Unable to find role: " + roleName);
return role;
}
return null;
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
RoleModel role = hasRole(realm, mapperModel, context);
if (role == null) {
user.deleteRoleMapping(role);
}
}
@Override
public String getHelpText() {
return "Looks for an external role in a keycloak access token. If external role exists, grant the user the specified realm or application role.";
}
}
@@ -0,0 +1,98 @@
package org.keycloak.broker.oidc.mappers;
import org.keycloak.broker.oidc.KeycloakOIDCIdentityProviderFactory;
import org.keycloak.broker.oidc.OIDCIdentityProviderFactory;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class UserAttributeMapper extends AbstractClaimMapper {
public static final String[] COMPATIBLE_PROVIDERS = {KeycloakOIDCIdentityProviderFactory.PROVIDER_ID, OIDCIdentityProviderFactory.PROVIDER_ID};
private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
public static final String USER_ATTRIBUTE = "user.attribute";
static {
ProviderConfigProperty property;
ProviderConfigProperty property1;
property1 = new ProviderConfigProperty();
property1.setName(CLAIM);
property1.setLabel("Claim");
property1.setHelpText("Name of claim to search for in token. You can reference nested claims using a '.', i.e. 'address.locality'.");
property1.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property1);
property = new ProviderConfigProperty();
property.setName(USER_ATTRIBUTE);
property.setLabel("User Attribute Name");
property.setHelpText("User attribute name to store claim.");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
}
public static final String PROVIDER_ID = "oidc-user-attribute-idp-mapper";
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public String getDisplayCategory() {
return "Attribute Importer";
}
@Override
public String getDisplayType() {
return "Attribute Importer";
}
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(USER_ATTRIBUTE);
Object value = getClaimValue(mapperModel, context);
if (value != null) {
context.setUserAttribute(attribute, value.toString());
}
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(USER_ATTRIBUTE);
Object value = getClaimValue(mapperModel, context);
String current = user.getFirstAttribute(attribute);
if (value != null && !value.equals(current)) {
user.setSingleAttribute(attribute, value.toString());
} else if (value == null) {
user.removeAttribute(attribute);
}
}
@Override
public String getHelpText() {
return "Import declared claim if it exists in ID or access token into the specified user attribute.";
}
}
@@ -0,0 +1,105 @@
package org.keycloak.broker.oidc.mappers;
import org.keycloak.broker.oidc.KeycloakOIDCIdentityProviderFactory;
import org.keycloak.broker.oidc.OIDCIdentityProviderFactory;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.KeycloakModelUtils;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class UsernameTemplateMapper extends AbstractClaimMapper {
public static final String[] COMPATIBLE_PROVIDERS = {KeycloakOIDCIdentityProviderFactory.PROVIDER_ID, OIDCIdentityProviderFactory.PROVIDER_ID};
private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
public static final String TEMPLATE = "template";
static {
ProviderConfigProperty property;
property = new ProviderConfigProperty();
property.setName(TEMPLATE);
property.setLabel("Template");
property.setHelpText("Template to use to format the username to import. Substitutions are enclosed in ${}. For example: '${ALIAS}.${CLAIM.sub}'. ALIAS is the provider alias. CLAIM.<NAME> references an ID or Access token claim.");
property.setType(ProviderConfigProperty.STRING_TYPE);
property.setDefaultValue("${ALIAS}.${CLAIM.preferred_username}");
configProperties.add(property);
}
public static final String PROVIDER_ID = "oidc-username-idp-mapper";
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public String getDisplayCategory() {
return "Preprocessor";
}
@Override
public String getDisplayType() {
return "Username Template Importer";
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
}
static Pattern substitution = Pattern.compile("\\$\\{([^}]+)\\}");
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String template = mapperModel.getConfig().get(TEMPLATE);
Matcher m = substitution.matcher(template);
StringBuffer sb = new StringBuffer();
while (m.find()) {
String variable = m.group(1);
if (variable.equals("ALIAS")) {
m.appendReplacement(sb, context.getIdpConfig().getAlias());
} else if (variable.equals("UUID")) {
m.appendReplacement(sb, KeycloakModelUtils.generateId());
} else if (variable.startsWith("CLAIM.")) {
String name = variable.substring("CLAIM.".length());
Object value = AbstractClaimMapper.getClaimValue(context, name);
if (value == null) value = "";
m.appendReplacement(sb, value.toString());
} else {
m.appendReplacement(sb, m.group(1));
}
}
m.appendTail(sb);
String username = sb.toString();
context.setModelUsername(username);
}
@Override
public String getHelpText() {
return "Format the username to import.";
}
}
@@ -0,0 +1,32 @@
package org.keycloak.broker.oidc.util;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.keycloak.broker.provider.util.SimpleHttp;
import java.io.IOException;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class JsonSimpleHttp extends SimpleHttp {
public JsonSimpleHttp(String url, String method) {
super(url, method);
}
public static JsonSimpleHttp doGet(String url) {
return new JsonSimpleHttp(url, "GET");
}
public static JsonSimpleHttp doPost(String url) {
return new JsonSimpleHttp(url, "POST");
}
private static ObjectMapper mapper = new ObjectMapper();
public static JsonNode asJson(SimpleHttp request) throws IOException {
return mapper.readTree(request.asString());
}
}
@@ -0,0 +1,2 @@
org.keycloak.broker.oidc.OIDCIdentityProviderFactory
org.keycloak.broker.oidc.KeycloakOIDCIdentityProviderFactory
@@ -0,0 +1,4 @@
org.keycloak.broker.oidc.mappers.ClaimToRoleMapper
org.keycloak.broker.oidc.mappers.ExternalKeycloakRoleToRoleMapper
org.keycloak.broker.oidc.mappers.UserAttributeMapper
org.keycloak.broker.oidc.mappers.UsernameTemplateMapper
@@ -0,0 +1,133 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015 Red Hat Inc. and/or its affiliates and other contributors
* as indicated by the @authors tag. All rights reserved.
*/
package org.keycloak.broker.oidc;
import org.codehaus.jackson.JsonNode;
import org.junit.Assert;
import org.junit.Test;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.models.IdentityProviderModel;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* Unit test for {@link AbstractOAuth2IdentityProvider}
*
* @author Vlastimil Elias (velias at redhat dot com)
*/
public class AbstractOAuth2IdentityProviderTest {
@Test
public void constructor_defaultScopeHandling(){
TestProvider tested = getTested();
//default scope is set from the provider if not provided in the configuration
Assert.assertEquals( tested.getDefaultScopes(), tested.getConfig().getDefaultScope());
//default scope is preserved if provided in the configuration
IdentityProviderModel model = new IdentityProviderModel();
OAuth2IdentityProviderConfig config = new OAuth2IdentityProviderConfig(model);
config.setDefaultScope("myscope");
tested = new TestProvider(config);
Assert.assertEquals("myscope", tested.getConfig().getDefaultScope());
}
@Test
public void getJsonProperty_asJsonNode() throws IOException {
TestProvider tested = getTested();
JsonNode jsonNode = tested
.asJsonNode("{\"nullone\":null, \"emptyone\":\"\", \"blankone\": \" \", \"withvalue\" : \"my value\", \"withbooleanvalue\" : true, \"withnumbervalue\" : 10}");
Assert.assertNull(tested.getJsonProperty(jsonNode, "nonexisting"));
Assert.assertNull(tested.getJsonProperty(jsonNode, "nullone"));
Assert.assertNull(tested.getJsonProperty(jsonNode, "emptyone"));
Assert.assertEquals(" ", tested.getJsonProperty(jsonNode, "blankone"));
Assert.assertEquals("my value", tested.getJsonProperty(jsonNode, "withvalue"));
Assert.assertEquals("true", tested.getJsonProperty(jsonNode, "withbooleanvalue"));
Assert.assertEquals("10", tested.getJsonProperty(jsonNode, "withnumbervalue"));
}
@Test(expected = IdentityBrokerException.class)
public void getFederatedIdentity_responseUrlLine_tokenNotFound() {
TestProvider tested = getTested();
tested.getFederatedIdentity("cosi=sss");
}
@Test(expected = IdentityBrokerException.class)
public void getFederatedIdentity_responseJSON_tokenNotFound() {
TestProvider tested = getTested();
Map<String, String> notes = new HashMap<>();
tested.getFederatedIdentity("{\"cosi\":\"sss\"}");
}
@Test(expected = IdentityBrokerException.class)
public void getFederatedIdentity_responseJSON_invalidFormat() {
TestProvider tested = getTested();
Map<String, String> notes = new HashMap<>();
tested.getFederatedIdentity("{\"cosi\":\"sss\"");
}
@Test(expected = IdentityBrokerException.class)
public void getFederatedIdentity_responseJSON_emptyTokenField() {
TestProvider tested = getTested();
tested.getFederatedIdentity("{\""
+ AbstractOAuth2IdentityProvider.OAUTH2_PARAMETER_ACCESS_TOKEN + "\" : \"\"}");
}
@Test(expected = IdentityBrokerException.class)
public void getFederatedIdentity_responseJSON_nullTokenField() {
TestProvider tested = getTested();
tested.getFederatedIdentity("{\""
+ AbstractOAuth2IdentityProvider.OAUTH2_PARAMETER_ACCESS_TOKEN + "\" : null}");
}
@Test
public void getFederatedIdentity_responseJSON() {
TestProvider tested = getTested();
BrokeredIdentityContext fi = tested.getFederatedIdentity("{\""
+ AbstractOAuth2IdentityProvider.OAUTH2_PARAMETER_ACCESS_TOKEN + "\" : \"458rt\"}");
Assert.assertNotNull(fi);
Assert.assertEquals("458rt", fi.getId());
}
@Test
public void getFederatedIdentity_responseUrlLine() {
TestProvider tested = getTested();
BrokeredIdentityContext fi = tested.getFederatedIdentity("cosi=sss&"
+ AbstractOAuth2IdentityProvider.OAUTH2_PARAMETER_ACCESS_TOKEN + "=458rtf&kdesi=ss}");
Assert.assertNotNull(fi);
Assert.assertEquals("458rtf", fi.getId());
}
private TestProvider getTested() {
IdentityProviderModel model = new IdentityProviderModel();
OAuth2IdentityProviderConfig config = new OAuth2IdentityProviderConfig(model);
return new TestProvider(config);
}
private static class TestProvider extends AbstractOAuth2IdentityProvider<OAuth2IdentityProviderConfig> {
public TestProvider(OAuth2IdentityProviderConfig config) {
super(config);
}
@Override
protected String getDefaultScopes() {
return "default";
}
protected BrokeredIdentityContext doGetFederatedIdentity(String accessToken) {
return new BrokeredIdentityContext(accessToken);
};
};
}
@@ -0,0 +1,120 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2015 Red Hat Inc. and/or its affiliates and other contributors
* as indicated by the @authors tag. All rights reserved.
*/
package org.keycloak.broker.oidc.mappers;
import java.io.IOException;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Assert;
import org.junit.Test;
/**
* Unit test for {@link AbstractJsonUserAttributeMapper}
*
* @author Vlastimil Elias (velias at redhat dot com)
*/
public class AbstractJsonUserAttributeMapperTest {
private static ObjectMapper mapper = new ObjectMapper();
private static JsonNode baseNode;
private JsonNode getJsonNode() throws JsonProcessingException, IOException {
if (baseNode == null)
baseNode = mapper.readTree("{ \"value1\" : \"v1 \",\"value_empty\" : \"\", \"value_b\" : true, \"value_i\" : 454, " + " \"value_array\":[\"a1\",\"a2\"], " +" \"nest1\": {\"value1\": \" fgh \",\"value_empty\" : \"\", \"nest2\":{\"value_b\" : false, \"value_i\" : 43}}, "+ " \"nesta\": { \"a\":[{\"av1\": \"vala1\"},{\"av1\": \"vala2\"}]}"+" }");
return baseNode;
}
@Test
public void getJsonValue_invalidPath() throws JsonProcessingException, IOException {
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "."));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), ".."));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "...value1"));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), ".value1"));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value1."));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "[]"));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "[value1"));
}
@Test
public void getJsonValue_simpleValues() throws JsonProcessingException, IOException {
//unknown field returns null
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_unknown"));
// we check value is trimmed also!
Assert.assertEquals("v1", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value1"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_empty"));
Assert.assertEquals("true", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_b"));
Assert.assertEquals("454", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_i"));
}
@Test
public void getJsonValue_nestedSimpleValues() throws JsonProcessingException, IOException {
// null if path points to JSON object
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1.nest2"));
//unknown field returns null
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1.value_unknown"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1.nest2.value_unknown"));
// we check value is trimmed also!
Assert.assertEquals("fgh", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1.value1"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1.value_empty"));
Assert.assertEquals("false", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1.nest2.value_b"));
Assert.assertEquals("43", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1.nest2.value_i"));
// null if invalid nested path
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1."));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nest1.nest2."));
}
@Test
public void getJsonValue_simpleArray() throws JsonProcessingException, IOException {
// array field itself returns null if no index is provided
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array"));
// outside index returns null
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array[2]"));
//corect index
Assert.assertEquals("a1", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array[0]"));
Assert.assertEquals("a2", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array[1]"));
//incorrect array constructs
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array[]"));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array]"));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array["));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array[a]"));
Assert.assertNull(AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "value_array[-2]"));
}
@Test
public void getJsonValue_nestedArrayWithObjects() throws JsonProcessingException, IOException {
Assert.assertEquals("vala1", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a[0].av1"));
Assert.assertEquals("vala2", AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a[1].av1"));
//different path erros or nonexisting indexes or fields return null
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a[2].av1"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a[0]"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a[0].av_unknown"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a[].av1"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a.av1"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a].av1"));
Assert.assertEquals(null, AbstractJsonUserAttributeMapper.getJsonValue(getJsonNode(), "nesta.a[.av1"));
}
}
Executable
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.8.0.Final</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-broker-parent</artifactId>
<name>Keycloak Broker Parent</name>
<description/>
<packaging>pom</packaging>
<modules>
<module>core</module>
<module>oidc</module>
<module>saml</module>
</modules>
</project>
+55
View File
@@ -0,0 +1,55 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.8.0.Final</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-broker-saml</artifactId>
<name>Keycloak Broker - SAML Identity Provider</name>
<description/>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-broker-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-saml-protocol</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-saml-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-services</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-events-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,88 @@
package org.keycloak.broker.saml;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import javax.xml.stream.XMLEventReader;
import org.keycloak.broker.provider.DefaultDataMarshaller;
import org.keycloak.dom.saml.v2.assertion.AssertionType;
import org.keycloak.dom.saml.v2.assertion.AuthnStatementType;
import org.keycloak.dom.saml.v2.protocol.ResponseType;
import org.keycloak.saml.common.exceptions.ParsingException;
import org.keycloak.saml.common.exceptions.ProcessingException;
import org.keycloak.saml.common.util.StaxUtil;
import org.keycloak.saml.processing.core.parsers.saml.SAMLParser;
import org.keycloak.saml.processing.core.parsers.util.SAMLParserUtil;
import org.keycloak.saml.processing.core.saml.v2.writers.SAMLAssertionWriter;
import org.keycloak.saml.processing.core.saml.v2.writers.SAMLResponseWriter;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class SAMLDataMarshaller extends DefaultDataMarshaller {
@Override
public String serialize(Object obj) {
// Lame impl, but hopefully sufficient for now. See if something better is needed...
if (obj.getClass().getName().startsWith("org.keycloak.dom.saml")) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
if (obj instanceof ResponseType) {
ResponseType responseType = (ResponseType) obj;
SAMLResponseWriter samlWriter = new SAMLResponseWriter(StaxUtil.getXMLStreamWriter(bos));
samlWriter.write(responseType);
} else if (obj instanceof AssertionType) {
AssertionType assertion = (AssertionType) obj;
SAMLAssertionWriter samlWriter = new SAMLAssertionWriter(StaxUtil.getXMLStreamWriter(bos));
samlWriter.write(assertion);
} else if (obj instanceof AuthnStatementType) {
AuthnStatementType authnStatement = (AuthnStatementType) obj;
SAMLAssertionWriter samlWriter = new SAMLAssertionWriter(StaxUtil.getXMLStreamWriter(bos));
samlWriter.write(authnStatement, true);
} else {
throw new IllegalArgumentException("Don't know how to serialize object of type " + obj.getClass().getName());
}
} catch (ProcessingException pe) {
throw new RuntimeException(pe);
}
return new String(bos.toByteArray());
} else {
return super.serialize(obj);
}
}
@Override
public <T> T deserialize(String serialized, Class<T> clazz) {
if (clazz.getName().startsWith("org.keycloak.dom.saml")) {
String xmlString = serialized;
try {
if (clazz.equals(ResponseType.class) || clazz.equals(AssertionType.class)) {
byte[] bytes = xmlString.getBytes();
InputStream is = new ByteArrayInputStream(bytes);
Object respType = new SAMLParser().parse(is);
return clazz.cast(respType);
} else if (clazz.equals(AuthnStatementType.class)) {
byte[] bytes = xmlString.getBytes();
InputStream is = new ByteArrayInputStream(bytes);
XMLEventReader xmlEventReader = new SAMLParser().createEventReader(is);
AuthnStatementType authnStatement = SAMLParserUtil.parseAuthnStatement(xmlEventReader);
return clazz.cast(authnStatement);
} else {
throw new IllegalArgumentException("Don't know how to deserialize object of type " + clazz.getName());
}
} catch (ParsingException pe) {
throw new RuntimeException(pe);
}
} else {
return super.deserialize(serialized, clazz);
}
}
}
@@ -0,0 +1,447 @@
package org.keycloak.broker.saml;
import org.jboss.logging.Logger;
import org.jboss.resteasy.annotations.cache.NoCache;
import org.keycloak.common.ClientConnection;
import org.keycloak.common.VerificationException;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.broker.provider.IdentityProvider;
import org.keycloak.dom.saml.v2.assertion.AssertionType;
import org.keycloak.dom.saml.v2.assertion.AttributeStatementType;
import org.keycloak.dom.saml.v2.assertion.AttributeType;
import org.keycloak.dom.saml.v2.assertion.AuthnStatementType;
import org.keycloak.dom.saml.v2.assertion.NameIDType;
import org.keycloak.dom.saml.v2.assertion.SubjectType;
import org.keycloak.dom.saml.v2.protocol.LogoutRequestType;
import org.keycloak.dom.saml.v2.protocol.RequestAbstractType;
import org.keycloak.dom.saml.v2.protocol.ResponseType;
import org.keycloak.dom.saml.v2.protocol.StatusResponseType;
import org.keycloak.events.Details;
import org.keycloak.events.Errors;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.protocol.saml.JaxrsSAML2BindingBuilder;
import org.keycloak.saml.SAML2LogoutResponseBuilder;
import org.keycloak.saml.SAMLRequestParser;
import org.keycloak.protocol.saml.SamlProtocol;
import org.keycloak.protocol.saml.SamlProtocolUtils;
import org.keycloak.saml.common.constants.GeneralConstants;
import org.keycloak.saml.common.constants.JBossSAMLURIConstants;
import org.keycloak.saml.common.exceptions.ConfigurationException;
import org.keycloak.saml.common.exceptions.ProcessingException;
import org.keycloak.saml.processing.core.saml.v2.common.SAMLDocumentHolder;
import org.keycloak.saml.processing.core.saml.v2.constants.X500SAMLProfileConstants;
import org.keycloak.saml.processing.core.saml.v2.util.AssertionUtil;
import org.keycloak.saml.processing.core.util.XMLSignatureUtil;
import org.keycloak.saml.processing.web.util.PostBindingUtil;
import org.keycloak.services.ErrorPage;
import org.keycloak.services.managers.AuthenticationManager;
import org.keycloak.services.messages.Messages;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import java.io.IOException;
import java.security.PublicKey;
import java.security.cert.X509Certificate;
import java.util.List;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class SAMLEndpoint {
protected static final Logger logger = Logger.getLogger(SAMLEndpoint.class);
public static final String SAML_FEDERATED_SESSION_INDEX = "SAML_FEDERATED_SESSION_INDEX";
public static final String SAML_FEDERATED_SUBJECT = "SAML_FEDERATED_SUBJECT";
public static final String SAML_FEDERATED_SUBJECT_NAMEFORMAT = "SAML_FEDERATED_SUBJECT_NAMEFORMAT";
public static final String SAML_LOGIN_RESPONSE = "SAML_LOGIN_RESPONSE";
public static final String SAML_ASSERTION = "SAML_ASSERTION";
public static final String SAML_AUTHN_STATEMENT = "SAML_AUTHN_STATEMENT";
protected RealmModel realm;
protected EventBuilder event;
protected SAMLIdentityProviderConfig config;
protected IdentityProvider.AuthenticationCallback callback;
protected SAMLIdentityProvider provider;
@Context
private UriInfo uriInfo;
@Context
private KeycloakSession session;
@Context
private ClientConnection clientConnection;
@Context
private HttpHeaders headers;
public SAMLEndpoint(RealmModel realm, SAMLIdentityProvider provider, SAMLIdentityProviderConfig config, IdentityProvider.AuthenticationCallback callback) {
this.realm = realm;
this.config = config;
this.callback = callback;
this.provider = provider;
}
@GET
@NoCache
@Path("descriptor")
public Response getSPDescriptor() {
return provider.export(uriInfo, realm, null);
}
@GET
public Response redirectBinding(@QueryParam(GeneralConstants.SAML_REQUEST_KEY) String samlRequest,
@QueryParam(GeneralConstants.SAML_RESPONSE_KEY) String samlResponse,
@QueryParam(GeneralConstants.RELAY_STATE) String relayState) {
return new RedirectBinding().execute(samlRequest, samlResponse, relayState);
}
/**
*/
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response postBinding(@FormParam(GeneralConstants.SAML_REQUEST_KEY) String samlRequest,
@FormParam(GeneralConstants.SAML_RESPONSE_KEY) String samlResponse,
@FormParam(GeneralConstants.RELAY_STATE) String relayState) {
return new PostBinding().execute(samlRequest, samlResponse, relayState);
}
protected abstract class Binding {
private boolean checkSsl() {
if (uriInfo.getBaseUri().getScheme().equals("https")) {
return true;
} else {
return !realm.getSslRequired().isRequired(clientConnection);
}
}
protected Response basicChecks(String samlRequest, String samlResponse) {
if (!checkSsl()) {
event.event(EventType.LOGIN);
event.error(Errors.SSL_REQUIRED);
return ErrorPage.error(session, Messages.HTTPS_REQUIRED);
}
if (!realm.isEnabled()) {
event.event(EventType.LOGIN_ERROR);
event.error(Errors.REALM_DISABLED);
return ErrorPage.error(session, Messages.REALM_NOT_ENABLED);
}
if (samlRequest == null && samlResponse == null) {
event.event(EventType.LOGIN);
event.error(Errors.INVALID_REQUEST);
return ErrorPage.error(session, Messages.INVALID_REQUEST);
}
return null;
}
protected abstract String getBindingType();
protected abstract void verifySignature(String key, SAMLDocumentHolder documentHolder) throws VerificationException;
protected abstract SAMLDocumentHolder extractRequestDocument(String samlRequest);
protected abstract SAMLDocumentHolder extractResponseDocument(String response);
protected PublicKey getIDPKey() {
X509Certificate certificate = null;
try {
certificate = XMLSignatureUtil.getX509CertificateFromKeyInfoString(config.getSigningCertificate().replaceAll("\\s", ""));
} catch (ProcessingException e) {
throw new RuntimeException(e);
}
return certificate.getPublicKey();
}
public Response execute(String samlRequest, String samlResponse, String relayState) {
event = new EventBuilder(realm, session, clientConnection);
Response response = basicChecks(samlRequest, samlResponse);
if (response != null) return response;
if (samlRequest != null) return handleSamlRequest(samlRequest, relayState);
else return handleSamlResponse(samlResponse, relayState);
}
protected Response handleSamlRequest(String samlRequest, String relayState) {
SAMLDocumentHolder holder = extractRequestDocument(samlRequest);
RequestAbstractType requestAbstractType = (RequestAbstractType) holder.getSamlObject();
// validate destination
if (requestAbstractType.getDestination() != null && !uriInfo.getAbsolutePath().equals(requestAbstractType.getDestination())) {
event.event(EventType.IDENTITY_PROVIDER_RESPONSE);
event.detail(Details.REASON, "invalid_destination");
event.error(Errors.INVALID_SAML_RESPONSE);
return ErrorPage.error(session, Messages.INVALID_REQUEST);
}
if (config.isValidateSignature()) {
try {
verifySignature(GeneralConstants.SAML_REQUEST_KEY, holder);
} catch (VerificationException e) {
logger.error("validation failed", e);
event.event(EventType.IDENTITY_PROVIDER_RESPONSE);
event.error(Errors.INVALID_SIGNATURE);
return ErrorPage.error(session, Messages.INVALID_REQUESTER);
}
}
if (requestAbstractType instanceof LogoutRequestType) {
logger.debug("** logout request");
event.event(EventType.LOGOUT);
LogoutRequestType logout = (LogoutRequestType) requestAbstractType;
return logoutRequest(logout, relayState);
} else {
event.event(EventType.LOGIN);
event.error(Errors.INVALID_TOKEN);
return ErrorPage.error(session, Messages.INVALID_REQUEST);
}
}
protected Response logoutRequest(LogoutRequestType request, String relayState) {
String brokerUserId = config.getAlias() + "." + request.getNameID().getValue();
if (request.getSessionIndex() == null || request.getSessionIndex().isEmpty()) {
List<UserSessionModel> userSessions = session.sessions().getUserSessionByBrokerUserId(realm, brokerUserId);
for (UserSessionModel userSession : userSessions) {
if (userSession.getState() == UserSessionModel.State.LOGGING_OUT || userSession.getState() == UserSessionModel.State.LOGGED_OUT) {
continue;
}
try {
AuthenticationManager.backchannelLogout(session, realm, userSession, uriInfo, clientConnection, headers, false);
} catch (Exception e) {
logger.warn("failed to do backchannel logout for userSession", e);
}
}
} else {
for (String sessionIndex : request.getSessionIndex()) {
String brokerSessionId = brokerUserId + "." + sessionIndex;
UserSessionModel userSession = session.sessions().getUserSessionByBrokerSessionId(realm, brokerSessionId);
if (userSession != null) {
if (userSession.getState() == UserSessionModel.State.LOGGING_OUT || userSession.getState() == UserSessionModel.State.LOGGED_OUT) {
continue;
}
try {
AuthenticationManager.backchannelLogout(session, realm, userSession, uriInfo, clientConnection, headers, false);
} catch (Exception e) {
logger.warn("failed to do backchannel logout for userSession", e);
}
}
}
}
String issuerURL = getEntityId(uriInfo, realm);
SAML2LogoutResponseBuilder builder = new SAML2LogoutResponseBuilder();
builder.logoutRequestID(request.getID());
builder.destination(config.getSingleLogoutServiceUrl());
builder.issuer(issuerURL);
JaxrsSAML2BindingBuilder binding = new JaxrsSAML2BindingBuilder()
.relayState(relayState);
if (config.isWantAuthnRequestsSigned()) {
binding.signWith(realm.getPrivateKey(), realm.getPublicKey(), realm.getCertificate())
.signatureAlgorithm(provider.getSignatureAlgorithm())
.signDocument();
}
try {
if (config.isPostBindingResponse()) {
return binding.postBinding(builder.buildDocument()).response(config.getSingleLogoutServiceUrl());
} else {
return binding.redirectBinding(builder.buildDocument()).response(config.getSingleLogoutServiceUrl());
}
} catch (ConfigurationException e) {
throw new RuntimeException(e);
} catch (ProcessingException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private String getEntityId(UriInfo uriInfo, RealmModel realm) {
return UriBuilder.fromUri(uriInfo.getBaseUri()).path("realms").path(realm.getName()).build().toString();
}
protected Response handleLoginResponse(String samlResponse, SAMLDocumentHolder holder, ResponseType responseType, String relayState) {
try {
AssertionType assertion = AssertionUtil.getAssertion(responseType, realm.getPrivateKey());
SubjectType subject = assertion.getSubject();
SubjectType.STSubType subType = subject.getSubType();
NameIDType subjectNameID = (NameIDType) subType.getBaseID();
//Map<String, String> notes = new HashMap<>();
BrokeredIdentityContext identity = new BrokeredIdentityContext(subjectNameID.getValue());
identity.setCode(relayState);
identity.getContextData().put(SAML_LOGIN_RESPONSE, responseType);
identity.getContextData().put(SAML_ASSERTION, assertion);
identity.setUsername(subjectNameID.getValue());
//SAML Spec 2.2.2 Format is optional
if (subjectNameID.getFormat() != null && subjectNameID.getFormat().toString().equals(JBossSAMLURIConstants.NAMEID_FORMAT_EMAIL.get())) {
identity.setEmail(subjectNameID.getValue());
}
if (config.isStoreToken()) {
identity.setToken(samlResponse);
}
AuthnStatementType authn = null;
for (Object statement : assertion.getStatements()) {
if (statement instanceof AuthnStatementType) {
authn = (AuthnStatementType)statement;
identity.getContextData().put(SAML_AUTHN_STATEMENT, authn);
break;
}
}
if (assertion.getAttributeStatements() != null ) {
for (AttributeStatementType attrStatement : assertion.getAttributeStatements()) {
for (AttributeStatementType.ASTChoiceType choice : attrStatement.getAttributes()) {
AttributeType attribute = choice.getAttribute();
if (X500SAMLProfileConstants.EMAIL.getFriendlyName().equals(attribute.getFriendlyName())
|| X500SAMLProfileConstants.EMAIL.get().equals(attribute.getName())) {
if (!attribute.getAttributeValue().isEmpty()) identity.setEmail(attribute.getAttributeValue().get(0).toString());
}
}
}
}
String brokerUserId = config.getAlias() + "." + subjectNameID.getValue();
identity.setBrokerUserId(brokerUserId);
identity.setIdpConfig(config);
identity.setIdp(provider);
if (authn != null && authn.getSessionIndex() != null) {
identity.setBrokerSessionId(identity.getBrokerUserId() + "." + authn.getSessionIndex());
}
return callback.authenticated(identity);
} catch (Exception e) {
throw new IdentityBrokerException("Could not process response from SAML identity provider.", e);
}
}
public Response handleSamlResponse(String samlResponse, String relayState) {
SAMLDocumentHolder holder = extractResponseDocument(samlResponse);
StatusResponseType statusResponse = (StatusResponseType)holder.getSamlObject();
// validate destination
if (statusResponse.getDestination() != null && !uriInfo.getAbsolutePath().toString().equals(statusResponse.getDestination())) {
event.event(EventType.IDENTITY_PROVIDER_RESPONSE);
event.detail(Details.REASON, "invalid_destination");
event.error(Errors.INVALID_SAML_RESPONSE);
return ErrorPage.error(session, Messages.INVALID_FEDERATED_IDENTITY_ACTION);
}
if (config.isValidateSignature()) {
try {
verifySignature(GeneralConstants.SAML_RESPONSE_KEY, holder);
} catch (VerificationException e) {
logger.error("validation failed", e);
event.event(EventType.IDENTITY_PROVIDER_RESPONSE);
event.error(Errors.INVALID_SIGNATURE);
return ErrorPage.error(session, Messages.INVALID_FEDERATED_IDENTITY_ACTION);
}
}
if (statusResponse instanceof ResponseType) {
return handleLoginResponse(samlResponse, holder, (ResponseType)statusResponse, relayState);
} else {
// todo need to check that it is actually a LogoutResponse
return handleLogoutResponse(holder, statusResponse, relayState);
}
//throw new RuntimeException("Unknown response type");
}
protected Response handleLogoutResponse(SAMLDocumentHolder holder, StatusResponseType responseType, String relayState) {
if (relayState == null) {
logger.error("no valid user session");
event.event(EventType.LOGOUT);
event.error(Errors.USER_SESSION_NOT_FOUND);
return ErrorPage.error(session, Messages.IDENTITY_PROVIDER_UNEXPECTED_ERROR);
}
UserSessionModel userSession = session.sessions().getUserSession(realm, relayState);
if (userSession == null) {
logger.error("no valid user session");
event.event(EventType.LOGOUT);
event.error(Errors.USER_SESSION_NOT_FOUND);
return ErrorPage.error(session, Messages.IDENTITY_PROVIDER_UNEXPECTED_ERROR);
}
if (userSession.getState() != UserSessionModel.State.LOGGING_OUT) {
logger.error("usersession in different state");
event.event(EventType.LOGOUT);
event.error(Errors.USER_SESSION_NOT_FOUND);
return ErrorPage.error(session, Messages.SESSION_NOT_ACTIVE);
}
return AuthenticationManager.finishBrowserLogout(session, realm, userSession, uriInfo, clientConnection, headers);
}
}
protected class PostBinding extends Binding {
@Override
protected void verifySignature(String key, SAMLDocumentHolder documentHolder) throws VerificationException {
SamlProtocolUtils.verifyDocumentSignature(documentHolder.getSamlDocument(), getIDPKey());
}
@Override
protected SAMLDocumentHolder extractRequestDocument(String samlRequest) {
return SAMLRequestParser.parseRequestPostBinding(samlRequest);
}
@Override
protected SAMLDocumentHolder extractResponseDocument(String response) {
byte[] samlBytes = PostBindingUtil.base64Decode(response);
String xml = new String(samlBytes);
return SAMLRequestParser.parseResponseDocument(samlBytes);
}
@Override
protected String getBindingType() {
return SamlProtocol.SAML_POST_BINDING;
}
}
protected class RedirectBinding extends Binding {
@Override
protected void verifySignature(String key, SAMLDocumentHolder documentHolder) throws VerificationException {
PublicKey publicKey = getIDPKey();
SamlProtocolUtils.verifyRedirectSignature(publicKey, uriInfo, key);
}
@Override
protected SAMLDocumentHolder extractRequestDocument(String samlRequest) {
return SAMLRequestParser.parseRequestRedirectBinding(samlRequest);
}
@Override
protected SAMLDocumentHolder extractResponseDocument(String response) {
return SAMLRequestParser.parseRequestRedirectBinding(response);
}
@Override
protected String getBindingType() {
return SamlProtocol.SAML_REDIRECT_BINDING;
}
}
}
@@ -0,0 +1,271 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.saml;
import org.jboss.logging.Logger;
import org.keycloak.broker.provider.AbstractIdentityProvider;
import org.keycloak.broker.provider.AuthenticationRequest;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.broker.provider.IdentityProviderDataMarshaller;
import org.keycloak.broker.provider.util.SimpleHttp;
import org.keycloak.dom.saml.v2.assertion.AssertionType;
import org.keycloak.dom.saml.v2.assertion.AuthnStatementType;
import org.keycloak.dom.saml.v2.assertion.NameIDType;
import org.keycloak.dom.saml.v2.assertion.SubjectType;
import org.keycloak.dom.saml.v2.protocol.ResponseType;
import org.keycloak.events.EventBuilder;
import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.FederatedIdentityModel;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.protocol.saml.JaxrsSAML2BindingBuilder;
import org.keycloak.saml.SAML2AuthnRequestBuilder;
import org.keycloak.saml.SAML2LogoutRequestBuilder;
import org.keycloak.saml.SAML2NameIDPolicyBuilder;
import org.keycloak.saml.SignatureAlgorithm;
import org.keycloak.saml.common.constants.GeneralConstants;
import org.keycloak.saml.common.constants.JBossSAMLURIConstants;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;
/**
* @author Pedro Igor
*/
public class SAMLIdentityProvider extends AbstractIdentityProvider<SAMLIdentityProviderConfig> {
protected static final Logger logger = Logger.getLogger(SAMLIdentityProvider.class);
public SAMLIdentityProvider(SAMLIdentityProviderConfig config) {
super(config);
}
@Override
public Object callback(RealmModel realm, AuthenticationCallback callback, EventBuilder event) {
return new SAMLEndpoint(realm, this, getConfig(), callback);
}
@Override
public Response performLogin(AuthenticationRequest request) {
try {
UriInfo uriInfo = request.getUriInfo();
RealmModel realm = request.getRealm();
String issuerURL = getEntityId(uriInfo, realm);
String destinationUrl = getConfig().getSingleSignOnServiceUrl();
String nameIDPolicyFormat = getConfig().getNameIDPolicyFormat();
if (nameIDPolicyFormat == null) {
nameIDPolicyFormat = JBossSAMLURIConstants.NAMEID_FORMAT_PERSISTENT.get();
}
String protocolBinding = JBossSAMLURIConstants.SAML_HTTP_REDIRECT_BINDING.get();
String assertionConsumerServiceUrl = request.getRedirectUri();
if (getConfig().isPostBindingResponse()) {
protocolBinding = JBossSAMLURIConstants.SAML_HTTP_POST_BINDING.get();
}
SAML2AuthnRequestBuilder authnRequestBuilder = new SAML2AuthnRequestBuilder()
.assertionConsumerUrl(assertionConsumerServiceUrl)
.destination(destinationUrl)
.issuer(issuerURL)
.forceAuthn(getConfig().isForceAuthn())
.protocolBinding(protocolBinding)
.nameIdPolicy(SAML2NameIDPolicyBuilder.format(nameIDPolicyFormat));
JaxrsSAML2BindingBuilder binding = new JaxrsSAML2BindingBuilder()
.relayState(request.getState());
if (getConfig().isWantAuthnRequestsSigned()) {
PrivateKey privateKey = realm.getPrivateKey();
PublicKey publicKey = realm.getPublicKey();
if (privateKey == null) {
throw new IdentityBrokerException("Identity Provider [" + getConfig().getAlias() + "] wants a signed authentication request. But the Realm [" + realm.getName() + "] does not have a private key.");
}
if (publicKey == null) {
throw new IdentityBrokerException("Identity Provider [" + getConfig().getAlias() + "] wants a signed authentication request. But the Realm [" + realm.getName() + "] does not have a public key.");
}
KeyPair keypair = new KeyPair(publicKey, privateKey);
binding.signWith(keypair);
binding.signatureAlgorithm(getSignatureAlgorithm());
binding.signDocument();
}
if (getConfig().isPostBindingAuthnRequest()) {
return binding.postBinding(authnRequestBuilder.toDocument()).request(destinationUrl);
} else {
return binding.redirectBinding(authnRequestBuilder.toDocument()).request(destinationUrl);
}
} catch (Exception e) {
throw new IdentityBrokerException("Could not create authentication request.", e);
}
}
private String getEntityId(UriInfo uriInfo, RealmModel realm) {
return UriBuilder.fromUri(uriInfo.getBaseUri()).path("realms").path(realm.getName()).build().toString();
}
@Override
public void attachUserSession(UserSessionModel userSession, ClientSessionModel clientSession, BrokeredIdentityContext context) {
ResponseType responseType = (ResponseType)context.getContextData().get(SAMLEndpoint.SAML_LOGIN_RESPONSE);
AssertionType assertion = (AssertionType)context.getContextData().get(SAMLEndpoint.SAML_ASSERTION);
SubjectType subject = assertion.getSubject();
SubjectType.STSubType subType = subject.getSubType();
NameIDType subjectNameID = (NameIDType) subType.getBaseID();
userSession.setNote(SAMLEndpoint.SAML_FEDERATED_SUBJECT, subjectNameID.getValue());
if (subjectNameID.getFormat() != null) userSession.setNote(SAMLEndpoint.SAML_FEDERATED_SUBJECT_NAMEFORMAT, subjectNameID.getFormat().toString());
AuthnStatementType authn = (AuthnStatementType)context.getContextData().get(SAMLEndpoint.SAML_AUTHN_STATEMENT);
if (authn != null && authn.getSessionIndex() != null) {
userSession.setNote(SAMLEndpoint.SAML_FEDERATED_SESSION_INDEX, authn.getSessionIndex());
}
}
@Override
public Response retrieveToken(FederatedIdentityModel identity) {
return Response.ok(identity.getToken()).build();
}
@Override
public void backchannelLogout(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm) {
String singleLogoutServiceUrl = getConfig().getSingleLogoutServiceUrl();
if (singleLogoutServiceUrl == null || singleLogoutServiceUrl.trim().equals("") || !getConfig().isBackchannelSupported()) return;
SAML2LogoutRequestBuilder logoutBuilder = buildLogoutRequest(userSession, uriInfo, realm, singleLogoutServiceUrl);
JaxrsSAML2BindingBuilder binding = buildLogoutBinding(userSession, realm);
try {
int status = SimpleHttp.doPost(singleLogoutServiceUrl)
.param(GeneralConstants.SAML_REQUEST_KEY, binding.postBinding(logoutBuilder.buildDocument()).encoded())
.param(GeneralConstants.RELAY_STATE, userSession.getId()).asStatus();
boolean success = status >=200 && status < 400;
if (!success) {
logger.warn("Failed saml backchannel broker logout to: " + singleLogoutServiceUrl);
}
} catch (Exception e) {
logger.warn("Failed saml backchannel broker logout to: " + singleLogoutServiceUrl, e);
}
}
@Override
public Response keycloakInitiatedBrowserLogout(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm) {
String singleLogoutServiceUrl = getConfig().getSingleLogoutServiceUrl();
if (singleLogoutServiceUrl == null || singleLogoutServiceUrl.trim().equals("")) return null;
if (getConfig().isBackchannelSupported()) {
backchannelLogout(userSession, uriInfo, realm);
return null;
} else {
try {
SAML2LogoutRequestBuilder logoutBuilder = buildLogoutRequest(userSession, uriInfo, realm, singleLogoutServiceUrl);
JaxrsSAML2BindingBuilder binding = buildLogoutBinding(userSession, realm);
return binding.postBinding(logoutBuilder.buildDocument()).request(singleLogoutServiceUrl);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
protected SAML2LogoutRequestBuilder buildLogoutRequest(UserSessionModel userSession, UriInfo uriInfo, RealmModel realm, String singleLogoutServiceUrl) {
SAML2LogoutRequestBuilder logoutBuilder = new SAML2LogoutRequestBuilder()
.assertionExpiration(realm.getAccessCodeLifespan())
.issuer(getEntityId(uriInfo, realm))
.sessionIndex(userSession.getNote(SAMLEndpoint.SAML_FEDERATED_SESSION_INDEX))
.userPrincipal(userSession.getNote(SAMLEndpoint.SAML_FEDERATED_SUBJECT), userSession.getNote(SAMLEndpoint.SAML_FEDERATED_SUBJECT_NAMEFORMAT))
.destination(singleLogoutServiceUrl);
return logoutBuilder;
}
private JaxrsSAML2BindingBuilder buildLogoutBinding(UserSessionModel userSession, RealmModel realm) {
JaxrsSAML2BindingBuilder binding = new JaxrsSAML2BindingBuilder()
.relayState(userSession.getId());
if (getConfig().isWantAuthnRequestsSigned()) {
binding.signWith(realm.getPrivateKey(), realm.getPublicKey(), realm.getCertificate())
.signatureAlgorithm(getSignatureAlgorithm())
.signDocument();
}
return binding;
}
@Override
public Response export(UriInfo uriInfo, RealmModel realm, String format) {
String authnBinding = JBossSAMLURIConstants.SAML_HTTP_REDIRECT_BINDING.get();
if (getConfig().isPostBindingAuthnRequest()) {
authnBinding = JBossSAMLURIConstants.SAML_HTTP_POST_BINDING.get();
}
String endpoint = uriInfo.getBaseUriBuilder()
.path("realms").path(realm.getName())
.path("broker")
.path(getConfig().getAlias())
.path("endpoint")
.build().toString();
String descriptor =
"<EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"" + getEntityId(uriInfo, realm) + "\">\n" +
" <SPSSODescriptor AuthnRequestsSigned=\"" + getConfig().isWantAuthnRequestsSigned() + "\"\n" +
" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol http://schemas.xmlsoap.org/ws/2003/07/secext\">\n" +
" <NameIDFormat>" + getConfig().getNameIDPolicyFormat() + "\n" +
" </NameIDFormat>\n" +
" <SingleLogoutService Binding=\"" + authnBinding + "\" Location=\"" + endpoint + "\"/>\n" +
" <AssertionConsumerService\n" +
" Binding=\"" + authnBinding + "\" Location=\"" + endpoint + "\"\n" +
" index=\"1\" isDefault=\"true\" />\n";
if (getConfig().isWantAuthnRequestsSigned()) {
descriptor +=
" <KeyDescriptor use=\"signing\">\n" +
" <dsig:KeyInfo xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\">\n" +
" <dsig:X509Data>\n" +
" <dsig:X509Certificate>\n" + realm.getCertificatePem() + "\n" +
" </dsig:X509Certificate>\n" +
" </dsig:X509Data>\n" +
" </dsig:KeyInfo>\n" +
" </KeyDescriptor>\n";
}
descriptor +=
" </SPSSODescriptor>\n" +
"</EntityDescriptor>\n";
return Response.ok(descriptor, MediaType.APPLICATION_XML_TYPE).build();
}
public SignatureAlgorithm getSignatureAlgorithm() {
String alg = getConfig().getSignatureAlgorithm();
if (alg != null) {
SignatureAlgorithm algorithm = SignatureAlgorithm.valueOf(alg);
if (algorithm != null) return algorithm;
}
return SignatureAlgorithm.RSA_SHA256;
}
@Override
public IdentityProviderDataMarshaller getMarshaller() {
return new SAMLDataMarshaller();
}
}
@@ -0,0 +1,130 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.saml;
import org.keycloak.models.IdentityProviderModel;
/**
* @author Pedro Igor
*/
public class SAMLIdentityProviderConfig extends IdentityProviderModel {
public SAMLIdentityProviderConfig() {
}
public SAMLIdentityProviderConfig(IdentityProviderModel identityProviderModel) {
super(identityProviderModel);
}
public String getSingleSignOnServiceUrl() {
return getConfig().get("singleSignOnServiceUrl");
}
public void setSingleSignOnServiceUrl(String singleSignOnServiceUrl) {
getConfig().put("singleSignOnServiceUrl", singleSignOnServiceUrl);
}
public String getSingleLogoutServiceUrl() {
return getConfig().get("singleLogoutServiceUrl");
}
public void setSingleLogoutServiceUrl(String singleLogoutServiceUrl) {
getConfig().put("singleLogoutServiceUrl", singleLogoutServiceUrl);
}
public boolean isValidateSignature() {
return Boolean.valueOf(getConfig().get("validateSignature"));
}
public void setValidateSignature(boolean validateSignature) {
getConfig().put("validateSignature", String.valueOf(validateSignature));
}
public boolean isForceAuthn() {
return Boolean.valueOf(getConfig().get("forceAuthn"));
}
public void setForceAuthn(boolean forceAuthn) {
getConfig().put("forceAuthn", String.valueOf(forceAuthn));
}
public String getSigningCertificate() {
return getConfig().get("signingCertificate");
}
public void setSigningCertificate(String signingCertificate) {
getConfig().put("signingCertificate", signingCertificate);
}
public String getNameIDPolicyFormat() {
return getConfig().get("nameIDPolicyFormat");
}
public void setNameIDPolicyFormat(String nameIDPolicyFormat) {
getConfig().put("nameIDPolicyFormat", nameIDPolicyFormat);
}
public boolean isWantAuthnRequestsSigned() {
return Boolean.valueOf(getConfig().get("wantAuthnRequestsSigned"));
}
public void setWantAuthnRequestsSigned(boolean wantAuthnRequestsSigned) {
getConfig().put("wantAuthnRequestsSigned", String.valueOf(wantAuthnRequestsSigned));
}
public String getSignatureAlgorithm() {
return getConfig().get("signatureAlgorithm");
}
public void setSignatureAlgorithm(String signatureAlgorithm) {
getConfig().put("signatureAlgorithm", signatureAlgorithm);
}
public String getEncryptionPublicKey() {
return getConfig().get("encryptionPublicKey");
}
public void setEncryptionPublicKey(String encryptionPublicKey) {
getConfig().put("encryptionPublicKey", encryptionPublicKey);
}
public boolean isPostBindingAuthnRequest() {
return Boolean.valueOf(getConfig().get("postBindingAuthnRequest"));
}
public void setPostBindingAuthnRequest(boolean postBindingAuthnRequest) {
getConfig().put("postBindingAuthnRequest", String.valueOf(postBindingAuthnRequest));
}
public boolean isPostBindingResponse() {
return Boolean.valueOf(getConfig().get("postBindingResponse"));
}
public void setPostBindingResponse(boolean postBindingResponse) {
getConfig().put("postBindingResponse", String.valueOf(postBindingResponse));
}
public boolean isBackchannelSupported() {
return Boolean.valueOf(getConfig().get("backchannelSupported"));
}
public void setBackchannelSupported(boolean backchannel) {
getConfig().put("backchannelSupported", String.valueOf(backchannel));
}
}
@@ -0,0 +1,162 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.broker.saml;
import org.keycloak.broker.provider.AbstractIdentityProviderFactory;
import org.keycloak.broker.saml.mappers.UsernameTemplateMapper;
import org.keycloak.dom.saml.v2.metadata.EndpointType;
import org.keycloak.dom.saml.v2.metadata.EntitiesDescriptorType;
import org.keycloak.dom.saml.v2.metadata.EntityDescriptorType;
import org.keycloak.dom.saml.v2.metadata.IDPSSODescriptorType;
import org.keycloak.dom.saml.v2.metadata.KeyDescriptorType;
import org.keycloak.dom.saml.v2.metadata.KeyTypes;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.IdentityProviderModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.saml.common.constants.JBossSAMLURIConstants;
import org.keycloak.saml.common.exceptions.ParsingException;
import org.keycloak.saml.common.util.DocumentUtil;
import org.keycloak.saml.processing.core.parsers.saml.SAMLParser;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Pedro Igor
*/
public class SAMLIdentityProviderFactory extends AbstractIdentityProviderFactory<SAMLIdentityProvider> {
public static final String PROVIDER_ID = "saml";
@Override
public String getName() {
return "SAML v2.0";
}
@Override
public SAMLIdentityProvider create(IdentityProviderModel model) {
return new SAMLIdentityProvider(new SAMLIdentityProviderConfig(model));
}
@Override
public Map<String, String> parseConfig(InputStream inputStream) {
try {
Object parsedObject = new SAMLParser().parse(inputStream);
EntityDescriptorType entityType;
if (EntitiesDescriptorType.class.isInstance(parsedObject)) {
entityType = (EntityDescriptorType) ((EntitiesDescriptorType) parsedObject).getEntityDescriptor().get(0);
} else {
entityType = (EntityDescriptorType) parsedObject;
}
List<EntityDescriptorType.EDTChoiceType> choiceType = entityType.getChoiceType();
if (!choiceType.isEmpty()) {
IDPSSODescriptorType idpDescriptor = null;
//Metadata documents can contain multiple Descriptors (See ADFS metadata documents) such as RoleDescriptor, SPSSODescriptor, IDPSSODescriptor.
//So we need to loop through to find the IDPSSODescriptor.
for(EntityDescriptorType.EDTChoiceType edtChoiceType : entityType.getChoiceType()) {
List<EntityDescriptorType.EDTDescriptorChoiceType> descriptors = edtChoiceType.getDescriptors();
if(!descriptors.isEmpty() && descriptors.get(0).getIdpDescriptor() != null) {
idpDescriptor = descriptors.get(0).getIdpDescriptor();
}
}
if (idpDescriptor != null) {
SAMLIdentityProviderConfig samlIdentityProviderConfig = new SAMLIdentityProviderConfig();
String singleSignOnServiceUrl = null;
boolean postBinding = false;
for (EndpointType endpoint : idpDescriptor.getSingleSignOnService()) {
if (endpoint.getBinding().toString().equals(JBossSAMLURIConstants.SAML_HTTP_POST_BINDING.get())) {
singleSignOnServiceUrl = endpoint.getLocation().toString();
postBinding = true;
break;
} else if (endpoint.getBinding().toString().equals(JBossSAMLURIConstants.SAML_HTTP_REDIRECT_BINDING.get())){
singleSignOnServiceUrl = endpoint.getLocation().toString();
}
}
String singleLogoutServiceUrl = null;
for (EndpointType endpoint : idpDescriptor.getSingleLogoutService()) {
if (postBinding && endpoint.getBinding().toString().equals(JBossSAMLURIConstants.SAML_HTTP_POST_BINDING.get())) {
singleLogoutServiceUrl = endpoint.getLocation().toString();
break;
} else if (!postBinding && endpoint.getBinding().toString().equals(JBossSAMLURIConstants.SAML_HTTP_REDIRECT_BINDING.get())){
singleLogoutServiceUrl = endpoint.getLocation().toString();
break;
}
}
samlIdentityProviderConfig.setSingleLogoutServiceUrl(singleLogoutServiceUrl);
samlIdentityProviderConfig.setSingleSignOnServiceUrl(singleSignOnServiceUrl);
samlIdentityProviderConfig.setWantAuthnRequestsSigned(idpDescriptor.isWantAuthnRequestsSigned());
samlIdentityProviderConfig.setValidateSignature(idpDescriptor.isWantAuthnRequestsSigned());
samlIdentityProviderConfig.setPostBindingResponse(postBinding);
samlIdentityProviderConfig.setPostBindingAuthnRequest(postBinding);
List<KeyDescriptorType> keyDescriptor = idpDescriptor.getKeyDescriptor();
String defaultCertificate = null;
if (keyDescriptor != null) {
for (KeyDescriptorType keyDescriptorType : keyDescriptor) {
Element keyInfo = keyDescriptorType.getKeyInfo();
Element x509KeyInfo = DocumentUtil.getChildElement(keyInfo, new QName("dsig", "X509Certificate"));
if (KeyTypes.SIGNING.equals(keyDescriptorType.getUse())) {
samlIdentityProviderConfig.setSigningCertificate(x509KeyInfo.getTextContent());
} else if (KeyTypes.ENCRYPTION.equals(keyDescriptorType.getUse())) {
samlIdentityProviderConfig.setEncryptionPublicKey(x509KeyInfo.getTextContent());
} else if (keyDescriptorType.getUse() == null) {
defaultCertificate = x509KeyInfo.getTextContent();
}
}
}
if (defaultCertificate != null) {
if (samlIdentityProviderConfig.getSigningCertificate() == null) {
samlIdentityProviderConfig.setSigningCertificate(defaultCertificate);
}
if (samlIdentityProviderConfig.getEncryptionPublicKey() == null) {
samlIdentityProviderConfig.setEncryptionPublicKey(defaultCertificate);
}
}
return samlIdentityProviderConfig.getConfig();
}
}
} catch (ParsingException pe) {
throw new RuntimeException("Could not parse IdP SAML Metadata", pe);
}
return new HashMap<String, String>();
}
@Override
public String getId() {
return PROVIDER_ID;
}
}
@@ -0,0 +1,141 @@
package org.keycloak.broker.saml.mappers;
import org.keycloak.broker.provider.AbstractIdentityProviderMapper;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.HardcodedRoleMapper;
import org.keycloak.broker.provider.IdentityBrokerException;
import org.keycloak.broker.saml.SAMLEndpoint;
import org.keycloak.broker.saml.SAMLIdentityProviderFactory;
import org.keycloak.dom.saml.v2.assertion.AssertionType;
import org.keycloak.dom.saml.v2.assertion.AttributeStatementType;
import org.keycloak.dom.saml.v2.assertion.AttributeType;
import org.keycloak.models.ClientModel;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.KeycloakModelUtils;
import org.keycloak.provider.ProviderConfigProperty;
import org.keycloak.representations.JsonWebToken;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class AttributeToRoleMapper extends AbstractIdentityProviderMapper {
public static final String[] COMPATIBLE_PROVIDERS = {SAMLIdentityProviderFactory.PROVIDER_ID};
private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
public static final String ATTRIBUTE_NAME = "attribute.name";
public static final String ATTRIBUTE_FRIENDLY_NAME = "attribute.friendly.name";
public static final String ATTRIBUTE_VALUE = "attribute.value";
static {
ProviderConfigProperty property;
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE_NAME);
property.setLabel("Attribute Name");
property.setHelpText("Name of attribute to search for in assertion. You can leave this blank and specify a friendly name instead.");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE_FRIENDLY_NAME);
property.setLabel("Friendly Name");
property.setHelpText("Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE_VALUE);
property.setLabel("Attribute Value");
property.setHelpText("Value the attribute must have. If the attribute is a list, then the value must be contained in the list.");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
property = new ProviderConfigProperty();
property.setName(HardcodedRoleMapper.ROLE);
property.setLabel("Role");
property.setHelpText("Role to grant to user. Click 'Select Role' button to browse roles, or just type it in the textbox. To reference an application role the syntax is appname.approle, i.e. myapp.myrole");
property.setType(ProviderConfigProperty.ROLE_TYPE);
configProperties.add(property);
}
public static final String PROVIDER_ID = "saml-role-idp-mapper";
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public String getDisplayCategory() {
return "Role Mapper";
}
@Override
public String getDisplayType() {
return "SAML Attribute to Role";
}
@Override
public void importNewUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String roleName = mapperModel.getConfig().get(HardcodedRoleMapper.ROLE);
if (isAttributePresent(mapperModel, context)) {
RoleModel role = KeycloakModelUtils.getRoleFromString(realm, roleName);
if (role == null) throw new IdentityBrokerException("Unable to find role: " + roleName);
user.grantRole(role);
}
}
protected boolean isAttributePresent(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String name = mapperModel.getConfig().get(ATTRIBUTE_NAME);
if (name != null && name.trim().equals("")) name = null;
String friendly = mapperModel.getConfig().get(ATTRIBUTE_FRIENDLY_NAME);
if (friendly != null && friendly.trim().equals("")) friendly = null;
String desiredValue = mapperModel.getConfig().get(ATTRIBUTE_VALUE);
AssertionType assertion = (AssertionType)context.getContextData().get(SAMLEndpoint.SAML_ASSERTION);
for (AttributeStatementType statement : assertion.getAttributeStatements()) {
for (AttributeStatementType.ASTChoiceType choice : statement.getAttributes()) {
AttributeType attr = choice.getAttribute();
if (name != null && !name.equals(attr.getName())) continue;
if (friendly != null && !name.equals(attr.getFriendlyName())) continue;
for (Object val : attr.getAttributeValue()) {
if (val.equals(desiredValue)) return true;
}
}
}
return false;
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String roleName = mapperModel.getConfig().get(HardcodedRoleMapper.ROLE);
if (!isAttributePresent(mapperModel, context)) {
RoleModel role = KeycloakModelUtils.getRoleFromString(realm, roleName);
if (role == null) throw new IdentityBrokerException("Unable to find role: " + roleName);
user.deleteRoleMapping(role);
}
}
@Override
public String getHelpText() {
return "If a claim exists, grant the user the specified realm or application role.";
}
}
@@ -0,0 +1,129 @@
package org.keycloak.broker.saml.mappers;
import org.keycloak.broker.provider.AbstractIdentityProviderMapper;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.saml.SAMLEndpoint;
import org.keycloak.broker.saml.SAMLIdentityProviderFactory;
import org.keycloak.dom.saml.v2.assertion.AssertionType;
import org.keycloak.dom.saml.v2.assertion.AttributeStatementType;
import org.keycloak.dom.saml.v2.assertion.AttributeType;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class UserAttributeMapper extends AbstractIdentityProviderMapper {
public static final String[] COMPATIBLE_PROVIDERS = {SAMLIdentityProviderFactory.PROVIDER_ID};
private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
public static final String ATTRIBUTE_NAME = "attribute.name";
public static final String ATTRIBUTE_FRIENDLY_NAME = "attribute.friendly.name";
public static final String USER_ATTRIBUTE = "user.attribute";
static {
ProviderConfigProperty property;
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE_NAME);
property.setLabel("Attribute Name");
property.setHelpText("Name of attribute to search for in assertion. You can leave this blank and specify a friendly name instead.");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
property = new ProviderConfigProperty();
property.setName(ATTRIBUTE_FRIENDLY_NAME);
property.setLabel("Friendly Name");
property.setHelpText("Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
property = new ProviderConfigProperty();
property.setName(USER_ATTRIBUTE);
property.setLabel("User Attribute Name");
property.setHelpText("User attribute name to store saml attribute.");
property.setType(ProviderConfigProperty.STRING_TYPE);
configProperties.add(property);
}
public static final String PROVIDER_ID = "saml-user-attribute-idp-mapper";
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public String getDisplayCategory() {
return "Attribute Importer";
}
@Override
public String getDisplayType() {
return "Attribute Importer";
}
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(USER_ATTRIBUTE);
Object value = getAttribute(mapperModel, context);
if (value != null) {
context.setUserAttribute(attribute, value.toString());
}
}
protected String getAttribute(IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String name = mapperModel.getConfig().get(ATTRIBUTE_NAME);
if (name != null && name.trim().equals("")) name = null;
String friendly = mapperModel.getConfig().get(ATTRIBUTE_FRIENDLY_NAME);
if (friendly != null && friendly.trim().equals("")) friendly = null;
AssertionType assertion = (AssertionType)context.getContextData().get(SAMLEndpoint.SAML_ASSERTION);
for (AttributeStatementType statement : assertion.getAttributeStatements()) {
for (AttributeStatementType.ASTChoiceType choice : statement.getAttributes()) {
AttributeType attr = choice.getAttribute();
if (name != null && !name.equals(attr.getName())) continue;
if (friendly != null && !friendly.equals(attr.getFriendlyName())) continue;
List<Object> attributeValue = attr.getAttributeValue();
if (attributeValue == null || attributeValue.isEmpty()) return null;
return attributeValue.get(0).toString();
}
}
return null;
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
String attribute = mapperModel.getConfig().get(USER_ATTRIBUTE);
Object value = getAttribute(mapperModel, context);
String current = user.getFirstAttribute(attribute);
if (value != null && !value.equals(current)) {
user.setSingleAttribute(attribute, value.toString());
} else if (value == null) {
user.removeAttribute(attribute);
}
}
@Override
public String getHelpText() {
return "Import declared saml attribute if it exists in assertion into the specified user attribute.";
}
}
@@ -0,0 +1,128 @@
package org.keycloak.broker.saml.mappers;
import org.keycloak.broker.provider.AbstractIdentityProviderMapper;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.saml.SAMLEndpoint;
import org.keycloak.broker.saml.SAMLIdentityProviderFactory;
import org.keycloak.dom.saml.v2.assertion.AssertionType;
import org.keycloak.dom.saml.v2.assertion.AttributeStatementType;
import org.keycloak.dom.saml.v2.assertion.AttributeType;
import org.keycloak.dom.saml.v2.assertion.NameIDType;
import org.keycloak.dom.saml.v2.assertion.SubjectType;
import org.keycloak.models.IdentityProviderMapperModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.utils.KeycloakModelUtils;
import org.keycloak.provider.ProviderConfigProperty;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class UsernameTemplateMapper extends AbstractIdentityProviderMapper {
public static final String[] COMPATIBLE_PROVIDERS = {SAMLIdentityProviderFactory.PROVIDER_ID};
private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
public static final String TEMPLATE = "template";
static {
ProviderConfigProperty property;
property = new ProviderConfigProperty();
property.setName(TEMPLATE);
property.setLabel("Template");
property.setHelpText("Template to use to format the username to import. Substitutions are enclosed in ${}. For example: '${ALIAS}.${NAMEID}'. ALIAS is the provider alias. NAMEID is that SAML name id assertion. ATTRIBUTE.<NAME> references a SAML attribute where name is the attribute name or friendly name.");
property.setType(ProviderConfigProperty.STRING_TYPE);
property.setDefaultValue("${ALIAS}.${NAMEID}");
configProperties.add(property);
}
public static final String PROVIDER_ID = "saml-username-idp-mapper";
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String[] getCompatibleProviders() {
return COMPATIBLE_PROVIDERS;
}
@Override
public String getDisplayCategory() {
return "Preprocessor";
}
@Override
public String getDisplayType() {
return "Username Template Importer";
}
@Override
public void updateBrokeredUser(KeycloakSession session, RealmModel realm, UserModel user, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
}
static Pattern substitution = Pattern.compile("\\$\\{([^}]+)\\}");
@Override
public void preprocessFederatedIdentity(KeycloakSession session, RealmModel realm, IdentityProviderMapperModel mapperModel, BrokeredIdentityContext context) {
AssertionType assertion = (AssertionType)context.getContextData().get(SAMLEndpoint.SAML_ASSERTION);
String template = mapperModel.getConfig().get(TEMPLATE);
Matcher m = substitution.matcher(template);
StringBuffer sb = new StringBuffer();
while (m.find()) {
String variable = m.group(1);
if (variable.equals("ALIAS")) {
m.appendReplacement(sb, context.getIdpConfig().getAlias());
} else if (variable.equals("UUID")) {
m.appendReplacement(sb, KeycloakModelUtils.generateId());
} else if (variable.equals("NAMEID")) {
SubjectType subject = assertion.getSubject();
SubjectType.STSubType subType = subject.getSubType();
NameIDType subjectNameID = (NameIDType) subType.getBaseID();
m.appendReplacement(sb, subjectNameID.getValue());
} else if (variable.startsWith("ATTRIBUTE.")) {
String name = variable.substring("ATTRIBUTE.".length());
String value = "";
for (AttributeStatementType statement : assertion.getAttributeStatements()) {
for (AttributeStatementType.ASTChoiceType choice : statement.getAttributes()) {
AttributeType attr = choice.getAttribute();
if (name.equals(attr.getName()) || name.equals(attr.getFriendlyName())) {
List<Object> attributeValue = attr.getAttributeValue();
if (attributeValue != null && !attributeValue.isEmpty()) {
value = attributeValue.get(0).toString();
}
break;
}
}
}
m.appendReplacement(sb, value);
} else {
m.appendReplacement(sb, m.group(1));
}
}
m.appendTail(sb);
context.setModelUsername(sb.toString());
}
@Override
public String getHelpText() {
return "Format the username to import.";
}
}
@@ -0,0 +1 @@
org.keycloak.broker.saml.SAMLIdentityProviderFactory
@@ -0,0 +1,3 @@
org.keycloak.broker.saml.mappers.AttributeToRoleMapper
org.keycloak.broker.saml.mappers.UserAttributeMapper
org.keycloak.broker.saml.mappers.UsernameTemplateMapper
@@ -0,0 +1,64 @@
package org.keycloak.broker.saml;
import org.junit.Assert;
import org.junit.Test;
import org.keycloak.dom.saml.v2.assertion.AssertionType;
import org.keycloak.dom.saml.v2.assertion.AuthnStatementType;
import org.keycloak.dom.saml.v2.assertion.NameIDType;
import org.keycloak.dom.saml.v2.protocol.ResponseType;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class SAMLDataMarshallerTest {
private static final String TEST_RESPONSE = "<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"ID_4804cf50-cd96-4b92-823e-89adaa0c78ba\" Version=\"2.0\" IssueInstant=\"2015-11-06T11:00:33.920Z\" Destination=\"http://localhost:8081/auth/realms/realm-with-broker/broker/kc-saml-idp-basic/endpoint\" InResponseTo=\"ID_c6b90123-f0bb-4c5c-bf9d-388d5bbe467a\"><saml:Issuer xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://localhost:8082/auth/realms/realm-with-saml-idp-basic</saml:Issuer><samlp:Status><samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"></samlp:StatusCode></samlp:Status><saml:Assertion xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"ID_29b196c2-d641-45c8-a423-8ed8e54d4cf9\" Version=\"2.0\" IssueInstant=\"2015-11-06T11:00:33.911Z\"><saml:Issuer xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://localhost:8082/auth/realms/realm-with-saml-idp-basic</saml:Issuer><saml:Subject><saml:NameID xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\">test-user</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml:SubjectConfirmationData InResponseTo=\"ID_c6b90123-f0bb-4c5c-bf9d-388d5bbe467a\" NotOnOrAfter=\"2015-11-06T11:05:31.911Z\" Recipient=\"http://localhost:8081/auth/realms/realm-with-broker/broker/kc-saml-idp-basic/endpoint\"></saml:SubjectConfirmationData></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore=\"2015-11-06T11:00:31.911Z\" NotOnOrAfter=\"2015-11-06T11:01:31.911Z\"><saml:AudienceRestriction><saml:Audience>http://localhost:8081/auth/realms/realm-with-broker</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant=\"2015-11-06T11:00:33.923Z\" SessionIndex=\"fa0f4fd3-8a11-44f4-9acb-ee30c5bb8fe5\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute Name=\"mobile\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\"><saml:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:type=\"xs:string\">617-666-7777</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"urn:oid:1.2.840.113549.1.9.1\" FriendlyName=\"email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\"><saml:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:type=\"xs:string\">test-user@localhost</saml:AttributeValue></saml:Attribute></saml:AttributeStatement><saml:AttributeStatement><saml:Attribute Name=\"Role\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\"><saml:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:type=\"xs:string\">manager</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion></samlp:Response>";
private static final String TEST_ASSERTION = "<saml:Assertion xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"ID_29b196c2-d641-45c8-a423-8ed8e54d4cf9\" Version=\"2.0\" IssueInstant=\"2015-11-06T11:00:33.911Z\"><saml:Issuer xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\">http://localhost:8082/auth/realms/realm-with-saml-idp-basic</saml:Issuer><saml:Subject><saml:NameID xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\">test-user</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml:SubjectConfirmationData InResponseTo=\"ID_c6b90123-f0bb-4c5c-bf9d-388d5bbe467a\" NotOnOrAfter=\"2015-11-06T11:05:31.911Z\" Recipient=\"http://localhost:8081/auth/realms/realm-with-broker/broker/kc-saml-idp-basic/endpoint\"></saml:SubjectConfirmationData></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore=\"2015-11-06T11:00:31.911Z\" NotOnOrAfter=\"2015-11-06T11:01:31.911Z\"><saml:AudienceRestriction><saml:Audience>http://localhost:8081/auth/realms/realm-with-broker</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant=\"2015-11-06T11:00:33.923Z\" SessionIndex=\"fa0f4fd3-8a11-44f4-9acb-ee30c5bb8fe5\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute Name=\"mobile\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\"><saml:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:type=\"xs:string\">617-666-7777</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"urn:oid:1.2.840.113549.1.9.1\" FriendlyName=\"email\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\"><saml:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:type=\"xs:string\">test-user@localhost</saml:AttributeValue></saml:Attribute></saml:AttributeStatement><saml:AttributeStatement><saml:Attribute Name=\"Role\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\"><saml:AttributeValue xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:type=\"xs:string\">manager</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion>";
private static final String TEST_AUTHN_TYPE = "<saml:AuthnStatement xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\" AuthnInstant=\"2015-11-06T11:00:33.923Z\" SessionIndex=\"fa0f4fd3-8a11-44f4-9acb-ee30c5bb8fe5\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement>";
@Test
public void testParseResponse() throws Exception {
SAMLDataMarshaller serializer = new SAMLDataMarshaller();
ResponseType responseType = serializer.deserialize(TEST_RESPONSE, ResponseType.class);
// test ResponseType
Assert.assertEquals(responseType.getID(), "ID_4804cf50-cd96-4b92-823e-89adaa0c78ba");
Assert.assertEquals(responseType.getDestination(), "http://localhost:8081/auth/realms/realm-with-broker/broker/kc-saml-idp-basic/endpoint");
Assert.assertEquals(responseType.getIssuer().getValue(), "http://localhost:8082/auth/realms/realm-with-saml-idp-basic");
Assert.assertEquals(responseType.getAssertions().get(0).getID(), "ID_29b196c2-d641-45c8-a423-8ed8e54d4cf9");
// back to String
String serialized = serializer.serialize(responseType);
Assert.assertEquals(TEST_RESPONSE, serialized);
}
@Test
public void testParseAssertion() throws Exception {
SAMLDataMarshaller serializer = new SAMLDataMarshaller();
AssertionType assertion = serializer.deserialize(TEST_ASSERTION, AssertionType.class);
// test assertion
Assert.assertEquals(assertion.getID(), "ID_29b196c2-d641-45c8-a423-8ed8e54d4cf9");
Assert.assertEquals(((NameIDType) assertion.getSubject().getSubType().getBaseID()).getValue(), "test-user");
// back to String
String serialized = serializer.serialize(assertion);
Assert.assertEquals(TEST_ASSERTION, serialized);
}
@Test
public void testParseAuthnType() throws Exception {
SAMLDataMarshaller serializer = new SAMLDataMarshaller();
AuthnStatementType authnStatement = serializer.deserialize(TEST_AUTHN_TYPE, AuthnStatementType.class);
// test authnStatement
Assert.assertEquals(authnStatement.getSessionIndex(), "fa0f4fd3-8a11-44f4-9acb-ee30c5bb8fe5");
// back to String
String serialized = serializer.serialize(authnStatement);
Assert.assertEquals(TEST_AUTHN_TYPE, serialized);
}
}
+26
View File
@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-client-registration-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.8.0.Final</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-client-registration-api</artifactId>
<name>Keycloak Client Registration API</name>
<description/>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,68 @@
package org.keycloak.client.registration;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpRequest;
import org.keycloak.common.util.Base64;
import org.keycloak.representations.idm.ClientInitialAccessPresentation;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.representations.oidc.OIDCClientRepresentation;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public abstract class Auth {
public abstract void addAuth(HttpRequest request);
public static Auth token(String token) {
return new BearerTokenAuth(token);
}
public static Auth token(ClientInitialAccessPresentation initialAccess) {
return new BearerTokenAuth(initialAccess.getToken());
}
public static Auth token(ClientRepresentation client) {
return new BearerTokenAuth(client.getRegistrationAccessToken());
}
public static Auth token(OIDCClientRepresentation client) {
return new BearerTokenAuth(client.getRegistrationAccessToken());
}
public static Auth client(String clientId, String clientSecret) {
return new BasicAuth(clientId, clientSecret);
}
private static class BearerTokenAuth extends Auth {
private String token;
public BearerTokenAuth(String token) {
this.token = token;
}
@Override
public void addAuth(HttpRequest request) {
request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + token);
}
}
private static class BasicAuth extends Auth {
private String username;
private String password;
public BasicAuth(String username, String password) {
this.username = username;
this.password = password;
}
@Override
public void addAuth(HttpRequest request) {
String val = Base64.encodeBytes((username + ":" + password).getBytes());
request.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + val);
}
}
}
@@ -0,0 +1,186 @@
package org.keycloak.client.registration;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClients;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.keycloak.representations.adapters.config.AdapterConfig;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.representations.oidc.OIDCClientRepresentation;
import org.keycloak.util.JsonSerialization;
import java.io.IOException;
import java.io.InputStream;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class ClientRegistration {
public static final ObjectMapper outputMapper = new ObjectMapper();
static {
outputMapper.getSerializationConfig().addMixInAnnotations(ClientRepresentation.class, ClientRepresentationMixIn.class);
outputMapper.getSerializationConfig().addMixInAnnotations(OIDCClientRepresentation.class, OIDCClientRepresentationMixIn.class);
outputMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
}
private final String JSON = "application/json";
private final String XML = "application/xml";
private final String DEFAULT = "default";
private final String INSTALLATION = "install";
private final String OIDC = "openid-connect";
private final String SAML = "saml2-entity-descriptor";
private HttpUtil httpUtil;
public static ClientRegistrationBuilder create() {
return new ClientRegistrationBuilder();
}
ClientRegistration(HttpUtil httpUtil) {
this.httpUtil = httpUtil;
}
public void close() throws ClientRegistrationException {
if (httpUtil != null) {
httpUtil.close();
}
httpUtil = null;
}
public ClientRegistration auth(Auth auth) {
httpUtil.setAuth(auth);
return this;
}
public ClientRepresentation create(ClientRepresentation client) throws ClientRegistrationException {
String content = serialize(client);
InputStream resultStream = httpUtil.doPost(content, JSON, JSON, DEFAULT);
return deserialize(resultStream, ClientRepresentation.class);
}
public ClientRepresentation get(String clientId) throws ClientRegistrationException {
InputStream resultStream = httpUtil.doGet(JSON, DEFAULT, clientId);
return resultStream != null ? deserialize(resultStream, ClientRepresentation.class) : null;
}
public AdapterConfig getAdapterConfig(String clientId) throws ClientRegistrationException {
InputStream resultStream = httpUtil.doGet(JSON, INSTALLATION, clientId);
return resultStream != null ? deserialize(resultStream, AdapterConfig.class) : null;
}
public ClientRepresentation update(ClientRepresentation client) throws ClientRegistrationException {
String content = serialize(client);
InputStream resultStream = httpUtil.doPut(content, JSON, JSON, DEFAULT, client.getClientId());
return resultStream != null ? deserialize(resultStream, ClientRepresentation.class) : null;
}
public void delete(ClientRepresentation client) throws ClientRegistrationException {
delete(client.getClientId());
}
public void delete(String clientId) throws ClientRegistrationException {
httpUtil.doDelete(DEFAULT, clientId);
}
public OIDCClientRegistration oidc() {
return new OIDCClientRegistration();
}
public SAMLClientRegistration saml() {
return new SAMLClientRegistration();
}
public static String serialize(Object obj) throws ClientRegistrationException {
try {
return outputMapper.writeValueAsString(obj);
} catch (IOException e) {
throw new ClientRegistrationException("Failed to write json object", e);
}
}
private static <T> T deserialize(InputStream inputStream, Class<T> clazz) throws ClientRegistrationException {
try {
return JsonSerialization.readValue(inputStream, clazz);
} catch (IOException e) {
throw new ClientRegistrationException("Failed to read json object", e);
}
}
public class OIDCClientRegistration {
public OIDCClientRepresentation create(OIDCClientRepresentation client) throws ClientRegistrationException {
String content = serialize(client);
InputStream resultStream = httpUtil.doPost(content, JSON, JSON, OIDC);
return deserialize(resultStream, OIDCClientRepresentation.class);
}
public OIDCClientRepresentation get(String clientId) throws ClientRegistrationException {
InputStream resultStream = httpUtil.doGet(JSON, OIDC, clientId);
return resultStream != null ? deserialize(resultStream, OIDCClientRepresentation.class) : null;
}
public OIDCClientRepresentation update(OIDCClientRepresentation client) throws ClientRegistrationException {
String content = serialize(client);
InputStream resultStream = httpUtil.doPut(content, JSON, JSON, OIDC, client.getClientId());
return resultStream != null ? deserialize(resultStream, OIDCClientRepresentation.class) : null;
}
public void delete(OIDCClientRepresentation client) throws ClientRegistrationException {
delete(client.getClientId());
}
public void delete(String clientId) throws ClientRegistrationException {
httpUtil.doDelete(OIDC, clientId);
}
}
public class SAMLClientRegistration {
public ClientRepresentation create(String entityDescriptor) throws ClientRegistrationException {
InputStream resultStream = httpUtil.doPost(entityDescriptor, XML, JSON, SAML);
return deserialize(resultStream, ClientRepresentation.class);
}
}
public static class ClientRegistrationBuilder {
private String url;
private HttpClient httpClient;
ClientRegistrationBuilder() {
}
public ClientRegistrationBuilder url(String realmUrl) {
url = realmUrl;
return this;
}
public ClientRegistrationBuilder url(String authUrl, String realm) {
url = HttpUtil.getUrl(authUrl, "realms", realm, "clients");
return this;
}
public ClientRegistrationBuilder httpClient(HttpClient httpClient) {
this.httpClient = httpClient;
return this;
}
public ClientRegistration build() {
if (url == null) {
throw new IllegalStateException("url not configured");
}
if (httpClient == null) {
httpClient = HttpClients.createDefault();
}
return new ClientRegistration(new HttpUtil(httpClient, url));
}
}
}
@@ -0,0 +1,16 @@
package org.keycloak.client.registration;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class ClientRegistrationException extends Exception {
public ClientRegistrationException(String s, Throwable throwable) {
super(s, throwable);
}
public ClientRegistrationException(String s) {
super(s);
}
}
@@ -0,0 +1,13 @@
package org.keycloak.client.registration;
import org.codehaus.jackson.annotate.JsonIgnore;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
abstract class ClientRepresentationMixIn {
@JsonIgnore
String registrationAccessToken;
}
@@ -0,0 +1,22 @@
package org.keycloak.client.registration;
import org.apache.http.StatusLine;
import java.io.IOException;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class HttpErrorException extends IOException {
private StatusLine statusLine;
public HttpErrorException(StatusLine statusLine) {
this.statusLine = statusLine;
}
public StatusLine getStatusLine() {
return statusLine;
}
}
@@ -0,0 +1,171 @@
package org.keycloak.client.registration;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.*;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.keycloak.client.registration.Auth;
import org.keycloak.client.registration.ClientRegistrationException;
import org.keycloak.client.registration.HttpErrorException;
import java.io.IOException;
import java.io.InputStream;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
class HttpUtil {
private HttpClient httpClient;
private String baseUri;
private Auth auth;
HttpUtil(HttpClient httpClient, String baseUri) {
this.httpClient = httpClient;
this.baseUri = baseUri;
}
void setAuth(Auth auth) {
this.auth = auth;
}
InputStream doPost(String content, String contentType, String acceptType, String... path) throws ClientRegistrationException {
try {
HttpPost request = new HttpPost(getUrl(baseUri, path));
request.setHeader(HttpHeaders.CONTENT_TYPE, contentType);
request.setHeader(HttpHeaders.ACCEPT, acceptType);
request.setEntity(new StringEntity(content));
addAuth(request);
HttpResponse response = httpClient.execute(request);
InputStream responseStream = null;
if (response.getEntity() != null) {
responseStream = response.getEntity().getContent();
}
if (response.getStatusLine().getStatusCode() == 201) {
return responseStream;
} else {
responseStream.close();
throw new HttpErrorException(response.getStatusLine());
}
} catch (IOException e) {
throw new ClientRegistrationException("Failed to send request", e);
}
}
InputStream doGet(String acceptType, String... path) throws ClientRegistrationException {
try {
HttpGet request = new HttpGet(getUrl(baseUri, path));
request.setHeader(HttpHeaders.ACCEPT, acceptType);
addAuth(request);
HttpResponse response = httpClient.execute(request);
InputStream responseStream = null;
if (response.getEntity() != null) {
responseStream = response.getEntity().getContent();
}
if (response.getStatusLine().getStatusCode() == 200) {
return responseStream;
} else if (response.getStatusLine().getStatusCode() == 404) {
responseStream.close();
return null;
} else {
if (responseStream != null) {
responseStream.close();
}
throw new HttpErrorException(response.getStatusLine());
}
} catch (IOException e) {
throw new ClientRegistrationException("Failed to send request", e);
}
}
InputStream doPut(String content, String contentType, String acceptType, String... path) throws ClientRegistrationException {
try {
HttpPut request = new HttpPut(getUrl(baseUri, path));
request.setHeader(HttpHeaders.CONTENT_TYPE, contentType);
request.setHeader(HttpHeaders.ACCEPT, acceptType);
request.setEntity(new StringEntity(content));
addAuth(request);
HttpResponse response = httpClient.execute(request);
if (response.getEntity() != null) {
response.getEntity().getContent();
}
InputStream responseStream = null;
if (response.getEntity() != null) {
responseStream = response.getEntity().getContent();
}
if (response.getStatusLine().getStatusCode() == 200) {
return responseStream;
} else {
if (responseStream != null) {
responseStream.close();
}
throw new HttpErrorException(response.getStatusLine());
}
} catch (IOException e) {
throw new ClientRegistrationException("Failed to send request", e);
}
}
void doDelete(String... path) throws ClientRegistrationException {
try {
HttpDelete request = new HttpDelete(getUrl(baseUri, path));
addAuth(request);
HttpResponse response = httpClient.execute(request);
if (response.getEntity() != null) {
response.getEntity().getContent().close();
}
if (response.getStatusLine().getStatusCode() != 204) {
throw new HttpErrorException(response.getStatusLine());
}
} catch (IOException e) {
throw new ClientRegistrationException("Failed to send request", e);
}
}
void close() throws ClientRegistrationException {
if (httpClient instanceof CloseableHttpClient) {
try {
((CloseableHttpClient) httpClient).close();
} catch (IOException e) {
throw new ClientRegistrationException("Failed to close http client", e);
}
}
}
static String getUrl(String baseUri, String... path) {
StringBuilder s = new StringBuilder();
s.append(baseUri);
for (String p : path) {
s.append('/');
s.append(p);
}
return s.toString();
}
private void addAuth(HttpRequestBase request) {
if (auth != null) {
auth.addAuth(request);
}
}
}
@@ -0,0 +1,22 @@
package org.keycloak.client.registration;
import org.codehaus.jackson.annotate.JsonIgnore;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
abstract class OIDCClientRepresentationMixIn {
@JsonIgnore
private Integer client_id_issued_at;
@JsonIgnore
private Integer client_secret_expires_at;
@JsonIgnore
private String registration_client_uri;
@JsonIgnore
private String registration_access_token;
}
+34
View File
@@ -0,0 +1,34 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-client-registration-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.7.0.Final-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-client-registration-cli</artifactId>
<name>Keycloak Client Registration CLI</name>
<description/>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-client-registration-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.aesh</groupId>
<artifactId>aesh</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,72 @@
package org.keycloak.client.registration.cli;
import org.jboss.aesh.cl.parser.CommandLineParserException;
import org.jboss.aesh.console.AeshConsole;
import org.jboss.aesh.console.AeshConsoleBuilder;
import org.jboss.aesh.console.Prompt;
import org.jboss.aesh.console.command.Command;
import org.jboss.aesh.console.command.CommandNotFoundException;
import org.jboss.aesh.console.command.registry.AeshCommandRegistryBuilder;
import org.jboss.aesh.console.settings.Settings;
import org.jboss.aesh.console.settings.SettingsBuilder;
import org.jboss.aesh.terminal.Color;
import org.jboss.aesh.terminal.TerminalColor;
import org.jboss.aesh.terminal.TerminalString;
import org.keycloak.client.registration.Auth;
import org.keycloak.client.registration.ClientRegistration;
import org.keycloak.client.registration.cli.commands.CreateCommand;
import org.keycloak.client.registration.cli.commands.ExitCommand;
import org.keycloak.client.registration.cli.commands.SetupCommand;
import java.util.LinkedList;
import java.util.List;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class ClientRegistrationCLI {
private static ClientRegistration reg;
public static void main(String[] args) throws CommandLineParserException, CommandNotFoundException {
reg = ClientRegistration.create().url("http://localhost:8080/auth/realms/master").build();
reg.auth(Auth.token("..."));
Context context = new Context();
List<Command> commands = new LinkedList<>();
commands.add(new SetupCommand(context));
commands.add(new CreateCommand(context));
commands.add(new ExitCommand(context));
SettingsBuilder builder = new SettingsBuilder().logging(true);
builder.enableMan(true).readInputrc(false);
Settings settings = builder.create();
AeshCommandRegistryBuilder commandRegistryBuilder = new AeshCommandRegistryBuilder();
for (Command c : commands) {
commandRegistryBuilder.command(c);
}
AeshConsole aeshConsole = new AeshConsoleBuilder()
.commandRegistry(commandRegistryBuilder.create())
.settings(settings)
.prompt(new Prompt(new TerminalString("[clientreg]$ ",
new TerminalColor(Color.GREEN, Color.DEFAULT, Color.Intensity.BRIGHT))))
.create();
aeshConsole.start();
/*
if (args.length > 0) {
CommandContainer command = registry.getCommand(args[0], null);
ParserGenerator.parseAndPopulate(command, args[0], Arrays.copyOfRange(args, 1, args.length));
}*/
//commandInvocation.getCommandRegistry().getAllCommandNames()
}
}
@@ -0,0 +1,37 @@
package org.keycloak.client.registration.cli;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.keycloak.client.registration.ClientRegistration;
import org.keycloak.util.SystemPropertiesJsonParserFactory;
import java.io.IOException;
import java.io.InputStream;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class Context {
private static final ObjectMapper mapper = new ObjectMapper(new SystemPropertiesJsonParserFactory());
static {
mapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
mapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
}
private ClientRegistration reg;
public ClientRegistration getReg() {
return reg;
}
public void setReg(ClientRegistration reg) {
this.reg = reg;
}
public static <T> T readJson(InputStream bytes, Class<T> type) throws IOException {
return mapper.readValue(bytes, type);
}
}
@@ -0,0 +1,64 @@
package org.keycloak.client.registration.cli.commands;
import org.jboss.aesh.cl.Arguments;
import org.jboss.aesh.cl.CommandDefinition;
import org.jboss.aesh.cl.Option;
import org.jboss.aesh.console.command.Command;
import org.jboss.aesh.console.command.CommandResult;
import org.jboss.aesh.console.command.invocation.CommandInvocation;
import org.jboss.aesh.io.Resource;
import org.keycloak.client.registration.ClientRegistrationException;
import org.keycloak.client.registration.cli.Context;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.util.JsonSerialization;
import java.io.IOException;
import java.util.List;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
@CommandDefinition(name="create", description = "[OPTIONS] FILE")
public class CreateCommand implements Command {
@Option(shortName = 'h', hasValue = false, description = "display this help and exit")
private boolean help;
@Arguments(description = "files or directories thats listed")
private List<Resource> arguments;
private Context context;
public CreateCommand(Context context) {
this.context = context;
}
@Override
public CommandResult execute(CommandInvocation commandInvocation) throws IOException, InterruptedException {
System.out.println(help);
if(help) {
commandInvocation.getShell().out().println(commandInvocation.getHelpInfo("create"));
}
else {
if(arguments != null) {
for(Resource f : arguments) {
System.out.println(f.getAbsolutePath());
ClientRepresentation rep = JsonSerialization.readValue(f.read(), ClientRepresentation.class);
try {
context.getReg().create(rep);
} catch (ClientRegistrationException e) {
e.printStackTrace();
}
}
}
}
// reg.create();
return CommandResult.SUCCESS;
}
}
@@ -0,0 +1,29 @@
package org.keycloak.client.registration.cli.commands;
import org.jboss.aesh.cl.CommandDefinition;
import org.jboss.aesh.console.command.Command;
import org.jboss.aesh.console.command.CommandResult;
import org.jboss.aesh.console.command.invocation.CommandInvocation;
import org.keycloak.client.registration.cli.Context;
import java.io.IOException;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
@CommandDefinition(name="exit", description = "Exit the program")
public class ExitCommand implements Command {
private Context context;
public ExitCommand(Context context) {
this.context = context;
}
@Override
public CommandResult execute(CommandInvocation commandInvocation) throws IOException, InterruptedException {
commandInvocation.stop();
return CommandResult.SUCCESS;
}
}
@@ -0,0 +1,48 @@
package org.keycloak.client.registration.cli.commands;
import org.jboss.aesh.cl.CommandDefinition;
import org.jboss.aesh.cl.Option;
import org.jboss.aesh.console.command.Command;
import org.jboss.aesh.console.command.CommandResult;
import org.jboss.aesh.console.command.invocation.CommandInvocation;
import org.jboss.aesh.io.Resource;
import org.keycloak.client.registration.ClientRegistrationException;
import org.keycloak.client.registration.cli.Context;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.util.JsonSerialization;
import java.io.IOException;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
@CommandDefinition(name="setup", description = "")
public class SetupCommand implements Command {
@Option(shortName = 'h', hasValue = false, description = "display this help and exit")
private boolean help;
private Context context;
public SetupCommand(Context context) {
this.context = context;
}
@Override
public CommandResult execute(CommandInvocation commandInvocation) throws IOException, InterruptedException {
System.out.println(help);
if(help) {
commandInvocation.getShell().out().println(commandInvocation.getHelpInfo("create"));
}
return CommandResult.SUCCESS;
}
private String promptForUsername(CommandInvocation invocation) throws InterruptedException {
invocation.print("username: ");
return invocation.getInputLine();
}
}
+19
View File
@@ -0,0 +1,19 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.8.0.Final</version>
</parent>
<name>Keycloak Client Registration Parent</name>
<description/>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-client-registration-parent</artifactId>
<packaging>pom</packaging>
<modules>
<module>api</module>
<!--<module>cli</module>-->
</modules>
</project>
Executable
+94
View File
@@ -0,0 +1,94 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.8.0.Final</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-common</artifactId>
<name>Keycloak Common</name>
<packaging>jar</packaging>
<description>Common library and dependencies shared with server and all adapters</description>
<properties>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
<keycloak.osgi.export>
org.keycloak.common.*
</keycloak.osgi.export>
<keycloak.osgi.import>
*;resolution:=optional
</keycloak.osgi.import>
</properties>
<dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<!-- Adding OSGI metadata to the JAR without changing the packaging type. -->
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>process-classes</phase>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
<configuration>
<instructions>
<Bundle-ClassPath>.</Bundle-ClassPath>
<Bundle-Name>${project.name}</Bundle-Name>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
<Import-Package>${keycloak.osgi.import}</Import-Package>
<Export-Package>${keycloak.osgi.export}</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -1,13 +1,13 @@
package org.keycloak;
/**
* Information about the client connection
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public interface ClientConnection {
String getRemoteAddr();
String getRemoteHost();
int getReportPort();
}
package org.keycloak.common;
/**
* Information about the client connection
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public interface ClientConnection {
String getRemoteAddr();
String getRemoteHost();
int getReportPort();
}
@@ -1,4 +1,4 @@
package org.keycloak;
package org.keycloak.common;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
+41
View File
@@ -0,0 +1,41 @@
package org.keycloak.common;
import org.keycloak.common.util.Time;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class Version {
public static final String UNKNOWN = "UNKNOWN";
public static String NAME;
public static String NAME_HTML;
public static String VERSION;
public static String RESOURCES_VERSION;
public static String BUILD_TIME;
static {
Properties props = new Properties();
InputStream is = Version.class.getResourceAsStream("/keycloak-version.properties");
try {
props.load(is);
Version.NAME = props.getProperty("name");
Version.NAME_HTML = props.getProperty("name-html");
Version.VERSION = props.getProperty("version");
Version.BUILD_TIME = props.getProperty("build-time");
Version.RESOURCES_VERSION = Version.VERSION.toLowerCase();
if (Version.RESOURCES_VERSION.endsWith("-snapshot")) {
Version.RESOURCES_VERSION = Version.RESOURCES_VERSION.replace("-snapshot", "-" + Time.currentTime());
}
} catch (IOException e) {
Version.VERSION= Version.UNKNOWN;
Version.BUILD_TIME= Version.UNKNOWN;
}
}
}
@@ -0,0 +1,10 @@
package org.keycloak.common.constants;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class GenericConstants {
public static final String PROTOCOL_CLASSPATH = "classpath:";
}
@@ -0,0 +1,61 @@
package org.keycloak.common.constants;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class KerberosConstants {
/**
* Value of HTTP Headers "WWW-Authenticate" or "Authorization" used for SPNEGO/Kerberos
**/
public static final String NEGOTIATE = "Negotiate";
/**
* OID of SPNEGO mechanism. See http://www.oid-info.com/get/1.3.6.1.5.5.2
*/
public static final String SPNEGO_OID = "1.3.6.1.5.5.2";
/**
* OID of Kerberos v5 mechanism. See http://www.oid-info.com/get/1.2.840.113554.1.2.2
*/
public static final String KRB5_OID = "1.2.840.113554.1.2.2";
/**
* OID of Kerberos v5 name. See http://www.oid-info.com/get/1.2.840.113554.1.2.2.1
*/
public static final String KRB5_NAME_OID = "1.2.840.113554.1.2.2.1";
/**
* Configuration federation provider model attributes.
*/
public static final String ALLOW_KERBEROS_AUTHENTICATION = "allowKerberosAuthentication";
public static final String KERBEROS_REALM = "kerberosRealm";
public static final String SERVER_PRINCIPAL = "serverPrincipal";
public static final String KEYTAB = "keyTab";
public static final String DEBUG = "debug";
public static final String ALLOW_PASSWORD_AUTHENTICATION = "allowPasswordAuthentication";
public static final String UPDATE_PROFILE_FIRST_LOGIN = "updateProfileFirstLogin";
public static final String USE_KERBEROS_FOR_PASSWORD_AUTHENTICATION = "useKerberosForPasswordAuthentication";
/**
* Internal attribute used in "state" map . Contains token to be passed in HTTP Response back to browser to continue handshake
*/
public static final String RESPONSE_TOKEN = "SpnegoResponseToken";
/**
* Internal attribute used in "userSession.note" map and in accessToken claims . Contains credential from SPNEGO/Kerberos successful authentication
*/
public static final String GSS_DELEGATION_CREDENTIAL = "gss_delegation_credential";
/**
* Display name for the above in admin console and consent screens
*/
public static final String GSS_DELEGATION_CREDENTIAL_DISPLAY_NAME = "gss delegation credential";
}
@@ -0,0 +1,19 @@
package org.keycloak.common.constants;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public interface ServiceAccountConstants {
String CLIENT_AUTH = "client_auth";
String SERVICE_ACCOUNT_USER_PREFIX = "service-account-";
String CLIENT_ID_PROTOCOL_MAPPER = "Client ID";
String CLIENT_HOST_PROTOCOL_MAPPER = "Client Host";
String CLIENT_ADDRESS_PROTOCOL_MAPPER = "Client IP Address";
String CLIENT_ID = "clientId";
String CLIENT_HOST = "clientHost";
String CLIENT_ADDRESS = "clientAddress";
}
@@ -0,0 +1,36 @@
package org.keycloak.common.enums;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public enum RelativeUrlsUsed {
/**
* Always use relative URI and resolve them later based on browser HTTP request
*/
ALL_REQUESTS,
/**
* Use relative Uris just for browser requests and resolve those based on browser HTTP requests.
* Backend request (like refresh token request, codeToToken request etc) will use the URI based on current hostname
*/
BROWSER_ONLY,
/**
* Relative Uri not used. Configuration contains absolute URI
*/
NEVER;
public boolean useRelative(boolean isBrowserReq) {
switch (this) {
case ALL_REQUESTS:
return true;
case NEVER:
return false;
case BROWSER_ONLY:
return isBrowserReq;
default:
return true;
}
}
}
@@ -1,6 +1,6 @@
package org.keycloak.enums;
package org.keycloak.common.enums;
import org.keycloak.ClientConnection;
import org.keycloak.common.ClientConnection;
import java.net.InetAddress;
import java.net.UnknownHostException;
File diff suppressed because it is too large. Load diff
@@ -1,44 +1,42 @@
package org.keycloak.util;
import net.iharder.Base64;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class Base64Url {
public static String encode(byte[] bytes) {
String s = Base64.encodeBytes(bytes);
s = s.split("=")[0]; // Remove any trailing '='s
s = s.replace('+', '-'); // 62nd char of encoding
s = s.replace('/', '_'); // 63rd char of encoding
return s;
}
public static byte[] decode(String s) {
s = s.replace('-', '+'); // 62nd char of encoding
s = s.replace('_', '/'); // 63rd char of encoding
switch (s.length() % 4) // Pad with trailing '='s
{
case 0:
break; // No pad chars in this case
case 2:
s += "==";
break; // Two pad chars
case 3:
s += "=";
break; // One pad char
default:
throw new RuntimeException(
"Illegal base64url string!");
}
try {
return Base64.decode(s);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
package org.keycloak.common.util;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class Base64Url {
public static String encode(byte[] bytes) {
String s = Base64.encodeBytes(bytes);
s = s.split("=")[0]; // Remove any trailing '='s
s = s.replace('+', '-'); // 62nd char of encoding
s = s.replace('/', '_'); // 63rd char of encoding
return s;
}
public static byte[] decode(String s) {
s = s.replace('-', '+'); // 62nd char of encoding
s = s.replace('_', '/'); // 63rd char of encoding
switch (s.length() % 4) // Pad with trailing '='s
{
case 0:
break; // No pad chars in this case
case 2:
s += "==";
break; // Two pad chars
case 3:
s += "=";
break; // One pad char
default:
throw new RuntimeException(
"Illegal base64url string!");
}
try {
return Base64.decode(s);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
@@ -1,4 +1,4 @@
package org.keycloak.util;
package org.keycloak.common.util;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -0,0 +1,165 @@
package org.keycloak.common.util;
import java.math.BigInteger;
import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import java.util.Calendar;
import java.util.Date;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.BasicConstraints;
import org.bouncycastle.asn1.x509.ExtendedKeyUsage;
import org.bouncycastle.asn1.x509.Extension;
import org.bouncycastle.asn1.x509.KeyPurposeId;
import org.bouncycastle.asn1.x509.KeyUsage;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.cert.X509ExtensionUtils;
import org.bouncycastle.cert.X509v1CertificateBuilder;
import org.bouncycastle.cert.X509v3CertificateBuilder;
import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
import org.bouncycastle.crypto.util.PrivateKeyFactory;
import org.bouncycastle.operator.ContentSigner;
import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder;
import org.bouncycastle.operator.DigestCalculator;
import org.bouncycastle.operator.bc.BcDigestCalculatorProvider;
import org.bouncycastle.operator.bc.BcRSAContentSignerBuilder;
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
/**
* The Class CertificateUtils provides utility functions for generation of V1 and V3 {@link java.security.cert.X509Certificate}
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @author <a href="mailto:giriraj.sharma27@gmail.com">Giriraj Sharma</a>
* @version $Revision: 2 $
*/
public class CertificateUtils {
static {
BouncyIntegration.init();
}
/**
* Generates version 3 {@link java.security.cert.X509Certificate}.
*
* @param keyPair the key pair
* @param caPrivateKey the CA private key
* @param caCert the CA certificate
* @param subject the subject name
*
* @return the x509 certificate
*
* @throws Exception the exception
*/
public static X509Certificate generateV3Certificate(KeyPair keyPair, PrivateKey caPrivateKey, X509Certificate caCert,
String subject) throws Exception {
try {
X500Name subjectDN = new X500Name("CN=" + subject);
// Serial Number
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
BigInteger serialNumber = BigInteger.valueOf(Math.abs(random.nextInt()));
// Validity
Date notBefore = new Date(System.currentTimeMillis());
Date notAfter = new Date(System.currentTimeMillis() + (((1000L * 60 * 60 * 24 * 30)) * 12) * 3);
// SubjectPublicKeyInfo
SubjectPublicKeyInfo subjPubKeyInfo = new SubjectPublicKeyInfo(ASN1Sequence.getInstance(keyPair.getPublic()
.getEncoded()));
X509v3CertificateBuilder certGen = new X509v3CertificateBuilder(new X500Name(caCert.getSubjectDN().getName()),
serialNumber, notBefore, notAfter, subjectDN, subjPubKeyInfo);
DigestCalculator digCalc = new BcDigestCalculatorProvider()
.get(new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1));
X509ExtensionUtils x509ExtensionUtils = new X509ExtensionUtils(digCalc);
// Subject Key Identifier
certGen.addExtension(Extension.subjectKeyIdentifier, false,
x509ExtensionUtils.createSubjectKeyIdentifier(subjPubKeyInfo));
// Authority Key Identifier
certGen.addExtension(Extension.authorityKeyIdentifier, false,
x509ExtensionUtils.createAuthorityKeyIdentifier(subjPubKeyInfo));
// Key Usage
certGen.addExtension(Extension.keyUsage, false, new KeyUsage(KeyUsage.digitalSignature | KeyUsage.keyCertSign
| KeyUsage.cRLSign));
// Extended Key Usage
KeyPurposeId[] EKU = new KeyPurposeId[2];
EKU[0] = KeyPurposeId.id_kp_emailProtection;
EKU[1] = KeyPurposeId.id_kp_serverAuth;
certGen.addExtension(Extension.extendedKeyUsage, false, new ExtendedKeyUsage(EKU));
// Basic Constraints
certGen.addExtension(Extension.basicConstraints, true, new BasicConstraints(0));
// Content Signer
ContentSigner sigGen = new JcaContentSignerBuilder("SHA1WithRSAEncryption").setProvider("BC").build(caPrivateKey);
// Certificate
return new JcaX509CertificateConverter().setProvider("BC").getCertificate(certGen.build(sigGen));
} catch (Exception e) {
throw new RuntimeException("Error creating X509v3Certificate.", e);
}
}
/**
* Generate version 1 self signed {@link java.security.cert.X509Certificate}..
*
* @param caKeyPair the CA key pair
* @param subject the subject name
*
* @return the x509 certificate
*
* @throws Exception the exception
*/
public static X509Certificate generateV1SelfSignedCertificate(KeyPair caKeyPair, String subject) throws Exception {
try {
X500Name subjectDN = new X500Name("CN=" + subject);
BigInteger serialNumber = BigInteger.valueOf(System.currentTimeMillis());
Date validityStartDate = new Date(System.currentTimeMillis() - 100000);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, 10);
Date validityEndDate = new Date(calendar.getTime().getTime());
SubjectPublicKeyInfo subPubKeyInfo = SubjectPublicKeyInfo.getInstance(caKeyPair.getPublic().getEncoded());
X509v1CertificateBuilder builder = new X509v1CertificateBuilder(subjectDN, serialNumber, validityStartDate,
validityEndDate, subjectDN, subPubKeyInfo);
X509CertificateHolder holder = builder.build(createSigner(caKeyPair.getPrivate()));
return new JcaX509CertificateConverter().getCertificate(holder);
} catch (Exception e) {
throw new RuntimeException("Error creating X509v1Certificate.", e);
}
}
/**
* Creates the content signer for generation of Version 1 {@link java.security.cert.X509Certificate}.
*
* @param privateKey the private key
*
* @return the content signer
*/
public static ContentSigner createSigner(PrivateKey privateKey) {
try {
AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find("SHA256WithRSAEncryption");
AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find(sigAlgId);
return new BcRSAContentSignerBuilder(sigAlgId, digAlgId)
.build(PrivateKeyFactory.createKey(privateKey.getEncoded()));
} catch (Exception e) {
throw new RuntimeException("Could not create content signer.", e);
}
}
}
@@ -0,0 +1,41 @@
package org.keycloak.common.util;
import java.util.Collection;
import java.util.Iterator;
/**
* @author <a href="mailto:jeroen.rosenberg@gmail.com">Jeroen Rosenberg</a>
*/
public class CollectionUtil {
public static String join(Collection<String> strings) {
return join(strings, ", ");
}
public static String join(Collection<String> strings, String separator) {
Iterator<String> iter = strings.iterator();
StringBuilder sb = new StringBuilder();
if(iter.hasNext()){
sb.append(iter.next());
while(iter.hasNext()){
sb.append(separator).append(iter.next());
}
}
return sb.toString();
}
// Return true if all items from col1 are in col2 and viceversa. Order is not taken into account
public static <T> boolean collectionEquals(Collection<T> col1, Collection<T> col2) {
if (col1.size() != col2.size()) {
return false;
}
for (T item : col1) {
if (!col2.contains(item)) {
return false;
}
}
return true;
}
}
@@ -1,4 +1,4 @@
package org.keycloak.util;
package org.keycloak.common.util;
import java.io.DataInputStream;
import java.io.InputStream;
@@ -1,4 +1,4 @@
package org.keycloak.util;
package org.keycloak.common.util;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
@@ -1,37 +1,37 @@
package org.keycloak.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public final class EnvUtil {
private static final Pattern p = Pattern.compile("[$][{]([^}]+)[}]");
private EnvUtil() {
}
/**
* Replaces any ${} strings with their corresponding environent variable.
*
* @param val
* @return
*/
public static String replace(String val) {
Matcher matcher = p.matcher(val);
StringBuffer buf = new StringBuffer();
while (matcher.find()) {
String envVar = matcher.group(1);
String envVal = System.getProperty(envVar);
if (envVal == null) envVal = "NOT-SPECIFIED";
matcher.appendReplacement(buf, envVal.replace("\\", "\\\\"));
}
matcher.appendTail(buf);
return buf.toString();
}
}
package org.keycloak.common.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public final class EnvUtil {
private static final Pattern p = Pattern.compile("[$][{]([^}]+)[}]");
private EnvUtil() {
}
/**
* Replaces any ${} strings with their corresponding environent variable.
*
* @param val
* @return
*/
public static String replace(String val) {
Matcher matcher = p.matcher(val);
StringBuffer buf = new StringBuffer();
while (matcher.find()) {
String envVar = matcher.group(1);
String envVal = System.getProperty(envVar);
if (envVal == null) envVal = "NOT-SPECIFIED";
matcher.appendReplacement(buf, envVal.replace("\\", "\\\\"));
}
matcher.appendTail(buf);
return buf.toString();
}
}
@@ -0,0 +1,37 @@
package org.keycloak.common.util;
import org.keycloak.common.constants.GenericConstants;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class FindFile {
public static InputStream findFile(String keycloakConfigFile) {
if (keycloakConfigFile.startsWith(GenericConstants.PROTOCOL_CLASSPATH)) {
String classPathLocation = keycloakConfigFile.replace(GenericConstants.PROTOCOL_CLASSPATH, "");
// Try current class classloader first
InputStream is = FindFile.class.getClassLoader().getResourceAsStream(classPathLocation);
if (is == null) {
is = Thread.currentThread().getContextClassLoader().getResourceAsStream(classPathLocation);
}
if (is != null) {
return is;
} else {
throw new RuntimeException("Unable to find config from classpath: " + keycloakConfigFile);
}
} else {
// Fallback to file
try {
return new FileInputStream(keycloakConfigFile);
} catch (FileNotFoundException fnfe) {
throw new RuntimeException(fnfe);
}
}
}
}
@@ -0,0 +1,74 @@
package org.keycloak.common.util;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class HostUtils {
// Best effort to find the most proper hostname of this server.
public static String getHostName() {
return getHostNameImpl().trim().toLowerCase();
}
public static String getIpAddress() {
try {
String hostname = getHostName();
return InetAddress.getByName(hostname).getHostAddress();
} catch (UnknownHostException uhe) {
throw new IllegalStateException(uhe);
}
}
private static String getHostNameImpl() {
// Return bind address if available
String bindAddr = System.getProperty("jboss.bind.address");
if (bindAddr != null && !bindAddr.trim().equals("0.0.0.0")) {
return bindAddr;
}
// Fallback to qualified name
String qualifiedHostName = System.getProperty("jboss.qualified.host.name");
if (qualifiedHostName != null) {
return qualifiedHostName;
}
// If not on jboss env, let's try other possible fallbacks
// POSIX-like OSes including Mac should have this set
qualifiedHostName = System.getenv("HOSTNAME");
if (qualifiedHostName != null) {
return qualifiedHostName;
}
// Certain versions of Windows
qualifiedHostName = System.getenv("COMPUTERNAME");
if (qualifiedHostName != null) {
return qualifiedHostName;
}
try {
return NetworkUtils.canonize(getLocalHost().getHostName());
} catch (UnknownHostException uhe) {
uhe.printStackTrace();
return "unknown-host.unknown-domain";
}
}
/**
* Methods returns InetAddress for localhost
*
* @return InetAddress of the localhost
* @throws UnknownHostException if localhost could not be resolved
*/
private static InetAddress getLocalHost() throws UnknownHostException {
InetAddress addr;
try {
addr = InetAddress.getLocalHost();
} catch (ArrayIndexOutOfBoundsException e) { //this is workaround for mac osx bug see AS7-3223 and JGRP-1404
addr = InetAddress.getByName(null);
}
return addr;
}
}
@@ -0,0 +1,55 @@
/*
* JBoss, Home of Professional Open Source
*
* Copyright 2013 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.common.util;
/**
* @author pedroigor
*/
public class HtmlUtils {
/**
* <p>Escapes the value for a HTML element attribute.</p>
*
* @param value
* @return
*/
public static String escapeAttribute(String value) {
StringBuilder escaped = new StringBuilder();
for (int i = 0; i < value.length(); i++) {
char chr = value.charAt(i);
if (chr == '<') {
escaped.append("&lt;");
} else if (chr == '>') {
escaped.append("&gt;");
} else if (chr == '"') {
escaped.append("&quot;");
} else if (chr == '\'') {
escaped.append("&apos;");
} else if (chr == '&') {
escaped.append("&amp;");
} else {
escaped.append(chr);
}
}
return escaped.toString();
}
}
@@ -0,0 +1,195 @@
package org.keycloak.common.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.lang.reflect.Method;
import javax.security.auth.kerberos.KerberosTicket;
import org.ietf.jgss.GSSCredential;
import org.ietf.jgss.GSSException;
import org.ietf.jgss.GSSManager;
import org.ietf.jgss.Oid;
import org.keycloak.common.constants.KerberosConstants;
import org.keycloak.common.util.reflections.Reflections;
import sun.security.jgss.GSSCredentialImpl;
import sun.security.jgss.GSSManagerImpl;
import sun.security.jgss.krb5.Krb5InitCredential;
import sun.security.jgss.krb5.Krb5NameElement;
import sun.security.jgss.spi.GSSCredentialSpi;
import sun.security.krb5.Credentials;
/**
* Provides serialization/deserialization of kerberos {@link org.ietf.jgss.GSSCredential}, so it can be transmitted from auth-server to the application
* and used for further calls to kerberos-secured services
*
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class KerberosSerializationUtils {
public static final Oid KRB5_OID;
public static final Oid KRB5_NAME_OID;
public static final String JAVA_INFO;
static {
try {
KRB5_OID = new Oid(KerberosConstants.KRB5_OID);
KRB5_NAME_OID = new Oid(KerberosConstants.KRB5_NAME_OID);
} catch (GSSException e) {
throw new RuntimeException(e);
}
String javaVersion = System.getProperty("java.version");
String javaRuntimeVersion = System.getProperty("java.runtime.version");
String javaVendor = System.getProperty("java.vendor");
String os = System.getProperty("os.version");
JAVA_INFO = "Java version: " + javaVersion + ", runtime version: " + javaRuntimeVersion + ", vendor: " + javaVendor + ", os: " + os;
}
private KerberosSerializationUtils() {
}
public static String serializeCredential(GSSCredential gssCredential) throws KerberosSerializationException {
try {
if (gssCredential == null) {
throw new KerberosSerializationException("Null credential given as input");
}
if (!(gssCredential instanceof GSSCredentialImpl)) {
throw new KerberosSerializationException("Unknown credential type: " + gssCredential.getClass());
}
GSSCredentialImpl gssCredImpl = (GSSCredentialImpl) gssCredential;
Oid[] mechs = gssCredImpl.getMechs();
for (Oid oid : mechs) {
if (oid.equals(KRB5_OID)) {
int usage = gssCredImpl.getUsage(oid);
boolean initiate = (usage == GSSCredential.INITIATE_ONLY || usage == GSSCredential.INITIATE_AND_ACCEPT);
GSSCredentialSpi credentialSpi = gssCredImpl.getElement(oid, initiate);
if (credentialSpi instanceof Krb5InitCredential) {
Krb5InitCredential credential = (Krb5InitCredential) credentialSpi;
KerberosTicket kerberosTicket = new KerberosTicket(credential.getEncoded(),
credential.getClient(),
credential.getServer(),
credential.getSessionKey().getEncoded(),
credential.getSessionKeyType(),
credential.getFlags(),
credential.getAuthTime(),
credential.getStartTime(),
credential.getEndTime(),
credential.getRenewTill(),
credential.getClientAddresses());
return serialize(kerberosTicket);
} else {
throw new KerberosSerializationException("Unsupported type of credentialSpi: " + credentialSpi.getClass());
}
}
}
throw new KerberosSerializationException("Kerberos credential not found. Available mechanisms: " + mechs);
} catch (IOException e) {
throw new KerberosSerializationException("Exception occured", e);
} catch (GSSException e) {
throw new KerberosSerializationException("Exception occured", e);
}
}
public static GSSCredential deserializeCredential(String serializedCred) throws KerberosSerializationException {
if (serializedCred == null) {
throw new KerberosSerializationException("Null credential given as input. Did you enable kerberos credential delegation for your web browser and mapping of gss credential to access token?");
}
try {
Object deserializedCred = deserialize(serializedCred);
if (!(deserializedCred instanceof KerberosTicket)) {
throw new KerberosSerializationException("Deserialized object is not KerberosTicket! Type is: " + deserializedCred);
}
KerberosTicket ticket = (KerberosTicket) deserializedCred;
String fullName = ticket.getClient().getName();
Method getInstance = Reflections.findDeclaredMethod(Krb5NameElement.class, "getInstance", String.class, Oid.class);
Krb5NameElement krb5Name = Reflections.invokeMethod(true, getInstance, Krb5NameElement.class, null, fullName, KRB5_NAME_OID);
Credentials krb5CredsInternal = new Credentials(
ticket.getEncoded(),
ticket.getClient().getName(),
ticket.getServer().getName(),
ticket.getSessionKey().getEncoded(),
ticket.getSessionKeyType(),
ticket.getFlags(),
ticket.getAuthTime(),
ticket.getStartTime(),
ticket.getEndTime(),
ticket.getRenewTill(),
ticket.getClientAddresses()
);
Method getInstance2 = Reflections.findDeclaredMethod(Krb5InitCredential.class, "getInstance", Krb5NameElement.class, Credentials.class);
Krb5InitCredential initCredential = Reflections.invokeMethod(true, getInstance2, Krb5InitCredential.class, null, krb5Name, krb5CredsInternal);
GSSManagerImpl manager = (GSSManagerImpl) GSSManager.getInstance();
return new GSSCredentialImpl(manager, initCredential);
} catch (Exception ioe) {
throw new KerberosSerializationException("Exception occured", ioe);
}
}
private static String serialize(Serializable obj) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(obj);
byte[] objBytes = bos.toByteArray();
return Base64.encodeBytes(objBytes);
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
private static Object deserialize(String serialized) throws ClassNotFoundException, IOException {
byte[] bytes = Base64.decode(serialized);
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInput in = null;
try {
in = new ObjectInputStream(bis);
return in.readObject();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public static class KerberosSerializationException extends RuntimeException {
public KerberosSerializationException(String message, Throwable cause) {
super(message + ", " + JAVA_INFO, cause);
}
public KerberosSerializationException(String message) {
super(message + ", " + JAVA_INFO);
}
}
}
@@ -0,0 +1,56 @@
package org.keycloak.common.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import org.keycloak.common.constants.GenericConstants;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class KeystoreUtil {
static {
BouncyIntegration.init();
}
public enum KeystoreFormat {
JKS,
PKCS12
}
public static KeyStore loadKeyStore(String filename, String password) throws Exception {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
InputStream trustStream = (filename.startsWith(GenericConstants.PROTOCOL_CLASSPATH))
?KeystoreUtil.class.getResourceAsStream(filename.replace(GenericConstants.PROTOCOL_CLASSPATH, ""))
:new FileInputStream(new File(filename));
trustStore.load(trustStream, password.toCharArray());
trustStream.close();
return trustStore;
}
public static PrivateKey loadPrivateKeyFromKeystore(String keystoreFile, String storePassword, String keyPassword, String keyAlias, KeystoreFormat format) {
InputStream stream = FindFile.findFile(keystoreFile);
try {
KeyStore keyStore = null;
if (format == KeystoreFormat.JKS) {
keyStore = KeyStore.getInstance(format.toString());
} else {
keyStore = KeyStore.getInstance(format.toString(), "BC");
}
keyStore.load(stream, storePassword.toCharArray());
PrivateKey key = (PrivateKey) keyStore.getKey(keyAlias, keyPassword.toCharArray());
if (key == null) {
throw new RuntimeException("Couldn't load key with alias '" + keyAlias + "' from keystore");
}
return key;
} catch (Exception e) {
throw new RuntimeException("Failed to load private key: " + e.getMessage(), e);
}
}
}
@@ -0,0 +1,29 @@
package org.keycloak.common.util;
import javax.activation.MimetypesFileTypeMap;
import java.io.File;
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class MimeTypeUtil {
private static MimetypesFileTypeMap map = new MimetypesFileTypeMap();
static {
map.addMimeTypes("text/css css CSS");
map.addMimeTypes("text/javascript js JS");
map.addMimeTypes("text/javascript js JS");
map.addMimeTypes("image/png png PNG");
map.addMimeTypes("image/svg+xml svg SVG");
map.addMimeTypes("text/html html htm HTML HTM");
}
public static String getContentType(File file) {
return map.getContentType(file);
}
public static String getContentType(String path) {
return map.getContentType(path);
}
}
@@ -1,4 +1,4 @@
package org.keycloak.util;
package org.keycloak.common.util;
import java.util.ArrayList;
import java.util.Collection;
@@ -0,0 +1,446 @@
package org.keycloak.common.util;
/*
* JBoss, Home of Professional Open Source.
* Copyright 2011, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.Arrays;
import java.util.Locale;
/**
* Utility methods related to networking.
*
* @author Brian Stansberry (c) 2011 Red Hat Inc.
*/
public class NetworkUtils {
private static final int MAX_GROUP_LENGTH = 4;
private static final int IPV6_LEN = 8;
private static final boolean can_bind_to_mcast_addr; // are we running on Linux ?
static {
can_bind_to_mcast_addr = checkForLinux() || checkForSolaris() || checkForHp();
}
public static String formatPossibleIpv6Address(String address) {
if(address == null) {
return null;
}
String ipv6Address;
if (address.startsWith("[") && address.endsWith("]")) {
ipv6Address = address.substring(0, address.lastIndexOf(']')).substring(1);
} else {
ipv6Address = address;
}
// Definitely not an IPv6, return untouched input.
if (!mayBeIPv6Address(ipv6Address)) {
return ipv6Address;
}
return '[' + canonize(ipv6Address) + ']';
}
/**
* <p>Convert IPv6 adress into RFC 5952 form.
* E.g. 2001:db8:0:1:0:0:0:1 -> 2001:db8:0:1::1</p>
*
* <p>Method is null safe, and if IPv4 address or host name is passed to the
* method it is returned wihout any processing.</p>
*
* <p>Method also supports IPv4 in IPv6 (e.g. 0:0:0:0:0:ffff:192.0.2.1 ->
* ::ffff:192.0.2.1), and zone ID (e.g. fe80:0:0:0:f0f0:c0c0:1919:1234%4
* -> fe80::f0f0:c0c0:1919:1234%4).</p>
*
* @param ipv6Address String representing valid IPv6 address.
* @return String representing IPv6 in canonical form.
* @throws IllegalArgumentException if IPv6 format is unacceptable.
*/
public static String canonize(String ipv6Address) throws IllegalArgumentException {
if (ipv6Address == null) {
return null;
}
// Definitely not an IPv6, return untouched input.
if (!mayBeIPv6Address(ipv6Address)) {
return ipv6Address;
}
// Length without zone ID (%zone) or IPv4 address
int ipv6AddressLength = ipv6Address.length();
if (isIPv4AddressInIPv6(ipv6Address)) {
// IPv4 in IPv6
// e.g. 0:0:0:0:0:FFFF:127.0.0.1
int lastColonPos = ipv6Address.lastIndexOf(":");
int lastColonsPos = ipv6Address.lastIndexOf("::");
if (lastColonsPos >= 0 && lastColonPos == lastColonsPos + 1) {
// IPv6 part ends with two consecutive colons, last colon is part of IPv6 format.
// e.g. ::127.0.0.1
ipv6AddressLength = lastColonPos + 1;
} else {
// IPv6 part ends with only one colon, last colon is not part of IPv6 format.
// e.g. ::FFFF:127.0.0.1
ipv6AddressLength = lastColonPos;
}
} else if (ipv6Address.contains(":") && ipv6Address.contains("%")) {
// Zone ID
// e.g. fe80:0:0:0:f0f0:c0c0:1919:1234%4
ipv6AddressLength = ipv6Address.lastIndexOf("%");
}
StringBuilder result = new StringBuilder();
char [][] groups = new char[IPV6_LEN][MAX_GROUP_LENGTH];
int groupCounter = 0;
int charInGroupCounter = 0;
// Index of the current zeroGroup, -1 means not found.
int zeroGroupIndex = -1;
int zeroGroupLength = 0;
// maximum length zero group, if there is more then one, then first one
int maxZeroGroupIndex = -1;
int maxZeroGroupLength = 0;
boolean isZero = true;
boolean groupStart = true;
/*
* Two consecutive colons, initial expansion.
* e.g. 2001:db8:0:0:1::1 -> 2001:db8:0:0:1:0:0:1
*/
StringBuilder expanded = new StringBuilder(ipv6Address);
int colonsPos = ipv6Address.indexOf("::");
int length = ipv6AddressLength;
int change = 0;
if (colonsPos >= 0 && colonsPos < ipv6AddressLength - 2) {
int colonCounter = 0;
for (int i = 0; i < ipv6AddressLength; i++) {
if (ipv6Address.charAt(i) == ':') {
colonCounter++;
}
}
if (colonsPos == 0) {
expanded.insert(0, "0");
change = change + 1;
}
for (int i = 0; i < IPV6_LEN - colonCounter; i++) {
expanded.insert(colonsPos + 1, "0:");
change = change + 2;
}
if (colonsPos == ipv6AddressLength - 2) {
expanded.setCharAt(colonsPos + change + 1, '0');
} else {
expanded.deleteCharAt(colonsPos + change + 1);
change = change - 1;
}
length = length + change;
}
// Processing one char at the time
for (int charCounter = 0; charCounter < length; charCounter++) {
char c = expanded.charAt(charCounter);
if (c >= 'A' && c <= 'F') {
c = (char) (c + 32);
}
if (c != ':') {
groups[groupCounter][charInGroupCounter] = c;
if (!(groupStart && c == '0')) {
++charInGroupCounter;
groupStart = false;
}
if (c != '0') {
isZero = false;
}
}
if (c == ':' || charCounter == (length - 1)) {
// We reached end of current group
if (isZero) {
++zeroGroupLength;
if (zeroGroupIndex == -1) {
zeroGroupIndex = groupCounter;
}
}
if (!isZero || charCounter == (length - 1)) {
// We reached end of zero group
if (zeroGroupLength > maxZeroGroupLength) {
maxZeroGroupLength = zeroGroupLength;
maxZeroGroupIndex = zeroGroupIndex;
}
zeroGroupLength = 0;
zeroGroupIndex = -1;
}
++groupCounter;
charInGroupCounter = 0;
isZero = true;
groupStart = true;
}
}
int numberOfGroups = groupCounter;
// Output results
for (groupCounter = 0; groupCounter < numberOfGroups; groupCounter++) {
if (maxZeroGroupLength <= 1 || groupCounter < maxZeroGroupIndex
|| groupCounter >= maxZeroGroupIndex + maxZeroGroupLength) {
for (int j = 0; j < MAX_GROUP_LENGTH; j++) {
if (groups[groupCounter][j] != 0) {
result.append(groups[groupCounter][j]);
}
}
if (groupCounter < (numberOfGroups - 1)
&& (groupCounter != maxZeroGroupIndex - 1
|| maxZeroGroupLength <= 1)) {
result.append(':');
}
} else if (groupCounter == maxZeroGroupIndex) {
result.append("::");
}
}
// Solve problem with three colons in IPv4 in IPv6 format
// e.g. 0:0:0:0:0:0:127.0.0.1 -> :::127.0.0.1 -> ::127.0.0.1
int resultLength = result.length();
if (result.charAt(resultLength - 1) == ':' && ipv6AddressLength < ipv6Address.length()
&& ipv6Address.charAt(ipv6AddressLength) == ':') {
result.delete(resultLength - 1, resultLength);
}
/*
* Append IPv4 from IPv4-in-IPv6 format or Zone ID
*/
for (int i = ipv6AddressLength; i < ipv6Address.length(); i++) {
result.append(ipv6Address.charAt(i));
}
return result.toString();
}
/**
* Heuristic check if string might be an IPv6 address.
*
* @param input Any string or null
* @return true, if input string contains only hex digits and at least two colons, before '.' or '%' character.
*/
private static boolean mayBeIPv6Address(String input) {
if (input == null) {
return false;
}
boolean result = false;
int colonsCounter = 0;
int length = input.length();
for (int i = 0; i < length; i++) {
char c = input.charAt(i);
if (c == '.' || c == '%') {
// IPv4 in IPv6 or Zone ID detected, end of checking.
break;
}
if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f')
|| (c >= 'A' && c <= 'F') || c == ':')) {
return false;
} else if (c == ':') {
colonsCounter++;
}
}
if (colonsCounter >= 2) {
result = true;
}
return result;
}
/**
* Check if it is an IPv4 in IPv6 format.
* e.g. 0:0:0:0:0:FFFF:127.0.0.1
*
* @param ipv6Address the address
* @return true, if input string is an IPv4 address in IPv6 format.
*/
private static boolean isIPv4AddressInIPv6(String ipv6Address) {
return (ipv6Address.contains(":") && ipv6Address.contains("."));
}
/**
* Formats input address. For IPV4 returns simply host address, for IPV6 formats address according to <a
* href="http://tools.ietf.org/html/rfc5952">RFC5952</a> rules. It does not embed IPV6 address in '[', ']', since those are part of IPV6 URI literal.
*
* @param inet
* @return
*/
public static String formatAddress(InetAddress inet){
if(inet == null){
throw new NullPointerException();
}
if(inet instanceof Inet4Address){
return inet.getHostAddress();
} else if (inet instanceof Inet6Address){
byte[] byteRepresentation = inet.getAddress();
int[] hexRepresentation = new int[IPV6_LEN];
for(int i=0;i < hexRepresentation.length;i++){
hexRepresentation[i] = ( byteRepresentation[2*i] & 0xFF) << 8 | ( byteRepresentation[2*i+1] & 0xFF );
}
compactLongestZeroSequence(hexRepresentation);
return formatAddress6(hexRepresentation);
} else {
return inet.getHostAddress();
}
}
/**
* Converts socket address into string literal, which has form: 'address:port'. Example:<br>
* <ul>
* <li>127.0.0.1:8080</li>
* <li>dns.name.com:8080</li>
* <li>[0fe:1::20]:8080</li>
* <li>[::1]:8080</li>
* </ul>
* @param inet
* @return
*/
public static String formatAddress(InetSocketAddress inet){
if(inet == null){
throw new NullPointerException();
}
StringBuilder result = new StringBuilder();
if(inet.isUnresolved()){
result.append(inet.getHostName());
}else{
result.append(formatPossibleIpv6Address(formatAddress(inet.getAddress())));
}
result.append(":").append(inet.getPort());
return result.toString();
}
/**
* Converts IPV6 int[] representation into valid IPV6 string literal. Sequence of '-1' values are converted into '::'.
* @param hexRepresentation
* @return
*/
private static String formatAddress6(int[] hexRepresentation){
if(hexRepresentation == null){
throw new NullPointerException();
}
if(hexRepresentation.length != IPV6_LEN){
throw new IllegalArgumentException();
}
StringBuilder stringBuilder = new StringBuilder();
boolean inCompressedSection = false;
for(int i = 0;i<hexRepresentation.length;i++){
if(hexRepresentation[i] == -1){
if(!inCompressedSection){
inCompressedSection = true;
if(i == 0){
stringBuilder.append("::");
} else {
stringBuilder.append(':');
}
}
} else {
inCompressedSection = false;
stringBuilder.append(Integer.toHexString(hexRepresentation[i]));
if(i+1<hexRepresentation.length){
stringBuilder.append(":");
}
}
}
return stringBuilder.toString();
}
public static boolean isBindingToMulticastDressSupported() {
return can_bind_to_mcast_addr;
}
private static void compactLongestZeroSequence(int[] hexRepresentatoin){
int bestRunStart = -1;
int bestRunLen = -1;
boolean inRun = false;
int runStart = -1;
for(int i=0;i<hexRepresentatoin.length;i++){
if(hexRepresentatoin[i] == 0){
if(!inRun){
runStart = i;
inRun = true;
}
} else {
if(inRun){
inRun = false;
int runLen = i - runStart;
if(bestRunLen < 0){
bestRunStart = runStart;
bestRunLen = runLen;
} else {
if(runLen > bestRunLen){
bestRunStart = runStart;
bestRunLen = runLen;
}
}
}
}
}
if(bestRunStart >=0){
Arrays.fill(hexRepresentatoin, bestRunStart, bestRunStart + bestRunLen, -1);
}
}
private static boolean checkForLinux() {
return checkForPresence("os.name", "linux");
}
private static boolean checkForHp() {
return checkForPresence("os.name", "hp");
}
private static boolean checkForSolaris() {
return checkForPresence("os.name", "sun");
}
private static boolean checkForWindows() {
return checkForPresence("os.name", "win");
}
public static boolean checkForMac() {
return checkForPresence("os.name", "mac");
}
private static boolean checkForPresence(final String key, final String value) {
final String tmp = System.getProperty(key, value);
try {
return tmp != null && tmp.trim().toLowerCase(Locale.ENGLISH).startsWith(value);
} catch (Throwable t) {
return false;
}
}
// No instantiation
private NetworkUtils() {
}
}
@@ -0,0 +1,31 @@
package org.keycloak.common.util;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class ObjectUtil {
private ObjectUtil() {}
/**
*
* @param str1
* @param str2
* @return true if both strings are null or equal
*/
public static boolean isEqualOrBothNull(Object str1, Object str2) {
if (str1 == null && str2 == null) {
return true;
}
if ((str1 != null && str2 == null) || (str1 == null && str2 != null)) {
return false;
}
return str1.equals(str2);
}
public static String capitalize(String str) {
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
}
@@ -1,7 +1,7 @@
/**
*
*/
package org.keycloak.util;
package org.keycloak.common.util;
import java.util.regex.Pattern;
@@ -1,110 +1,108 @@
package org.keycloak.util;
import net.iharder.Base64;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.X509Certificate;
/**
* Utility classes to extract PublicKey, PrivateKey, and X509Certificate from openssl generated PEM files
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public final class PemUtils {
static {
BouncyIntegration.init();
}
private PemUtils() {
}
public static X509Certificate decodeCertificate(InputStream is) throws Exception {
byte[] der = pemToDer(is);
ByteArrayInputStream bis = new ByteArrayInputStream(der);
return DerUtils.decodeCertificate(bis);
}
public static X509Certificate decodeCertificate(String cert) throws Exception {
byte[] der = pemToDer(cert);
ByteArrayInputStream bis = new ByteArrayInputStream(der);
return DerUtils.decodeCertificate(bis);
}
/**
* Extract a public key from a PEM string
*
* @param pem
* @return
* @throws Exception
*/
public static PublicKey decodePublicKey(String pem) throws Exception {
byte[] der = pemToDer(pem);
return DerUtils.decodePublicKey(der);
}
/**
* Extract a private key that is a PKCS8 pem string (base64 encoded PKCS8)
*
* @param pem
* @return
* @throws Exception
*/
public static PrivateKey decodePrivateKey(String pem) throws Exception {
byte[] der = pemToDer(pem);
return DerUtils.decodePrivateKey(der);
}
public static PrivateKey decodePrivateKey(InputStream is) throws Exception {
String pem = pemFromStream(is);
return decodePrivateKey(pem);
}
/**
* Decode a PEM file to DER format
*
* @param is
* @return
* @throws java.io.IOException
*/
public static byte[] pemToDer(InputStream is) throws IOException {
String pem = pemFromStream(is);
return pemToDer(pem);
}
/**
* Decode a PEM string to DER format
*
* @param pem
* @return
* @throws java.io.IOException
*/
public static byte[] pemToDer(String pem) throws IOException {
pem = removeBeginEnd(pem);
return Base64.decode(pem);
}
public static String removeBeginEnd(String pem) {
pem = pem.replaceAll("-----BEGIN (.*)-----", "");
pem = pem.replaceAll("-----END (.*)----", "");
pem = pem.replaceAll("\r\n", "");
pem = pem.replaceAll("\n", "");
return pem.trim();
}
public static String pemFromStream(InputStream is) throws IOException {
DataInputStream dis = new DataInputStream(is);
byte[] keyBytes = new byte[dis.available()];
dis.readFully(keyBytes);
dis.close();
return new String(keyBytes, "utf-8");
}
}
package org.keycloak.common.util;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.X509Certificate;
/**
* Utility classes to extract PublicKey, PrivateKey, and X509Certificate from openssl generated PEM files
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public final class PemUtils {
static {
BouncyIntegration.init();
}
private PemUtils() {
}
public static X509Certificate decodeCertificate(InputStream is) throws Exception {
byte[] der = pemToDer(is);
ByteArrayInputStream bis = new ByteArrayInputStream(der);
return DerUtils.decodeCertificate(bis);
}
public static X509Certificate decodeCertificate(String cert) throws Exception {
byte[] der = pemToDer(cert);
ByteArrayInputStream bis = new ByteArrayInputStream(der);
return DerUtils.decodeCertificate(bis);
}
/**
* Extract a public key from a PEM string
*
* @param pem
* @return
* @throws Exception
*/
public static PublicKey decodePublicKey(String pem) throws Exception {
byte[] der = pemToDer(pem);
return DerUtils.decodePublicKey(der);
}
/**
* Extract a private key that is a PKCS8 pem string (base64 encoded PKCS8)
*
* @param pem
* @return
* @throws Exception
*/
public static PrivateKey decodePrivateKey(String pem) throws Exception {
byte[] der = pemToDer(pem);
return DerUtils.decodePrivateKey(der);
}
public static PrivateKey decodePrivateKey(InputStream is) throws Exception {
String pem = pemFromStream(is);
return decodePrivateKey(pem);
}
/**
* Decode a PEM file to DER format
*
* @param is
* @return
* @throws java.io.IOException
*/
public static byte[] pemToDer(InputStream is) throws IOException {
String pem = pemFromStream(is);
return pemToDer(pem);
}
/**
* Decode a PEM string to DER format
*
* @param pem
* @return
* @throws java.io.IOException
*/
public static byte[] pemToDer(String pem) throws IOException {
pem = removeBeginEnd(pem);
return Base64.decode(pem);
}
public static String removeBeginEnd(String pem) {
pem = pem.replaceAll("-----BEGIN (.*)-----", "");
pem = pem.replaceAll("-----END (.*)----", "");
pem = pem.replaceAll("\r\n", "");
pem = pem.replaceAll("\n", "");
return pem.trim();
}
public static String pemFromStream(InputStream is) throws IOException {
DataInputStream dis = new DataInputStream(is);
byte[] keyBytes = new byte[dis.available()];
dis.readFully(keyBytes);
dis.close();
return new String(keyBytes, "utf-8");
}
}
Loaded 100 of 5137 files, more files were not shown because too many files have changed in this diff. Show more