Compare commits

..
2038 Commits
Author SHA1 Message Date
keycloak-bot f0a1cb4f26 Set version to 2.4.0.CR1 2016-11-21 19:29:18 +00:00
Stan Silvert 33cd261d83 Merge pull request #3532 from ssilvert/enter-key
KEYCLOAK-3948: Unexpected behavior when pressing Enter with some forms
2016-11-21 14:23:21 -05:00
Stian Thorgersen e515d7bbbe Merge pull request #3531 from stianst/master
Fix travis
2016-11-21 19:30:06 +01:00
Marek Posolda 68701900d8 Merge pull request #3530 from mposolda/master
KEYCLOAK-3944 Imported legacy LDAP Federation provider doesn't have d…
2016-11-21 18:25:44 +01:00
Stan Silvert ee18d062ab KEYCLOAK-3948: Remove console.info() statements. 2016-11-21 11:48:07 -05:00
Stan Silvert 695213dd31 KEYCLOAK-3948: Unexpected behavior when pressing Enter with some forms 2016-11-21 11:44:58 -05:00
Stian Thorgersen a52f7f9baa Fix travis 2016-11-21 17:04:39 +01:00
Marek Posolda fc84ffbd65 Merge pull request #3527 from hmlnarik/KEYCLOAK-3469-fix-in-test
KEYCLOAK-3469 Fix in the account test
2016-11-21 16:33:32 +01:00
mposolda 27e5d9672a KEYCLOAK-3944 Imported legacy LDAP Federation provider doesn't have default mappers available 2016-11-21 16:17:49 +01:00
Hynek Mlnarik 8f31425daf KEYCLOAK-3469 Fix in the account test 2016-11-21 16:00:36 +01:00
Marek Posolda 7c4591617b Merge pull request #3524 from hmlnarik/KEYCLOAK-3941
KEYCLOAK-3941 Add dependency to apache httpcomponents to WF/EAP deployments
2016-11-21 15:08:20 +01:00
Marek Posolda c21ab943bb Merge pull request #3525 from mposolda/master
KEYCLOAK-3943 Admin console issues when updating LDAP Storage provider
2016-11-21 15:07:23 +01:00
mposolda d8c8afe070 KEYCLOAK-3943 Admin console issues when updating LDAP Storage provider 2016-11-21 14:22:45 +01:00
Hynek Mlnarik d1a35a5acc KEYCLOAK-3941 2016-11-21 12:15:39 +01:00
Marek Posolda 2d4cda7eda Merge pull request #3522 from mposolda/master
KEYCLOAK-3931 Fix Mongo to have LDAP tests pass
2016-11-21 12:00:30 +01:00
mposolda 6df7a80352 KEYCLOAK-3931 Fix Mongo to have LDAP tests pass 2016-11-21 11:25:18 +01:00
Marek Posolda d261bbef88 Merge pull request #3521 from mposolda/master
KEYCLOAK-3936 Fix keycloak-authz-client JDK7 compatibility
2016-11-21 11:05:29 +01:00
mposolda 4fa903a02f KEYCLOAK-3936 Fix keycloak-authz-client JDK7 compatibility 2016-11-21 10:12:23 +01:00
Marek Posolda f0fd9e6137 Merge pull request #3519 from sldab/java7support-adapters
Restore Java 7 compatibility for adapters.
2016-11-21 09:35:25 +01:00
Slawomir Dabek a45ffce118 Restore Java 7 compatibility for adapters. 2016-11-20 22:19:53 +01:00
Marek Posolda c558e7e0b1 Merge pull request #3520 from ramunask/lt-translations-for-2.4
KEYCLOAK-3934 Lithuanian locale update for 2.4 version
2016-11-20 21:07:57 +01:00
Ramunas K bfec70481b translated admin-messages_lt 2016-11-19 23:29:49 +02:00
Marek Posolda a7c8fe4375 Merge pull request #3518 from mposolda/master
KEYCLOAK-3930 KEYCLOAK-3931 LDAP and Mongo fixes
2016-11-18 21:27:58 +01:00
mposolda da52a5c9cf KEYCLOAK-3930 KEYCLOAK-3931 LDAP and Mongo fixes 2016-11-18 20:02:02 +01:00
Marek Posolda 639cf1e038 Merge pull request #3517 from mposolda/master
KEYCLOAK-3895 Make UserSessionProvider and UserSessionPersisterProvid…
2016-11-18 16:31:04 +01:00
mposolda 76bfbad2c4 KEYCLOAK-3895 Make UserSessionProvider and UserSessionPersisterProvider to rely on UserRemovedEvent callbacks 2016-11-18 15:58:33 +01:00
Stian Thorgersen cca352fa9f Merge pull request #3516 from stianst/KEYCLOAK-3881
KEYCLOAK-3881 Fix login status iframe with * origin
2016-11-18 14:09:02 +01:00
Stian Thorgersen 7043ecc21b KEYCLOAK-3881 Fix login status iframe with * origin 2016-11-18 12:50:52 +01:00
Marek Posolda c384b8a81f Merge pull request #3515 from mposolda/master
KEYCLOAK-3928 KEYCLOAK-3880 Fix UserFederation providers list in admi…
2016-11-18 12:26:33 +01:00
mposolda 747738c0fc KEYCLOAK-3928 KEYCLOAK-3880 Fix UserFederation providers list in admin console 2016-11-18 11:57:57 +01:00
Marek Posolda 3e71aeddf3 Merge pull request #3479 from hmlnarik/KEYCLOAK-3469-UserRealmRoleMapper
KEYCLOAK-3469 Make role mappers account for user groups
2016-11-18 09:21:56 +01:00
Marek Posolda a2e00e4c3b Merge pull request #3497 from vramik/KEYCLOAK-3899
KEYCLOAK-3899 Make migration properties available in tests
2016-11-18 09:12:10 +01:00
Marek Posolda 2c6e9be8e5 Merge pull request #3504 from vramik/KEYCLOAK-3907
KEYCLOAK-3907 Test backwards compatibility of realm import
2016-11-18 09:10:59 +01:00
Marek Posolda fce41c0ab8 Merge pull request #3507 from mhajas/KEYCLOAK-3916
KEYCLOAK-3916 Remove classes with missing parent
2016-11-18 09:02:10 +01:00
Marek Posolda ca5c806f58 Merge pull request #3513 from pedroigor/KEYCLOAK-3830
[KEYCLOAK-3830] - Properly handle public resources when using security-constraints
2016-11-18 08:59:21 +01:00
Marek Posolda 1e8f5f1a51 Merge pull request #3514 from pedroigor/KEYCLOAK-3674
[KEYCLOAK-3674] - Review policies dropbox options
2016-11-18 08:56:56 +01:00
Marek Posolda b434c2b9cf Merge pull request #3510 from ssilvert/delete-subflows
KEYCLOAK-3681: Delete top flow doesn't remove all subflows
2016-11-18 08:50:13 +01:00
Marek Posolda 60afd280c3 Merge pull request #3512 from abstractj/KEYCLOAK-3918
[KEYCLOAK-3918] - Server won't boot on Windows
2016-11-18 08:44:37 +01:00
Pedro Igor 9b2ef96b22 [KEYCLOAK-3830] - Allow to configure enforcement-mode to a path definition 2016-11-17 20:50:28 -02:00
Pedro Igor 44ee53b0d8 [KEYCLOAK-3830] - Only enforce permissions when there is a KeycloakSecurityContext. 2016-11-17 20:50:17 -02:00
Pedro Igor Craveiro e Silva cc9131441e [KEYCLOAK-3674] - Review policies dropbox options 2016-11-17 20:43:32 -02:00
Marek Posolda 5e496fb9bb Merge pull request #3511 from mposolda/ispn-invalidations-rebase
KEYCLOAK-3857 Clustered invalidation cache fixes and refactoring. Sup…
2016-11-16 23:10:48 +01:00
Bruno Oliveira 5c089e45d4 [KEYCLOAK-3918] - Server won't boot on Windows 2016-11-16 19:37:48 -02:00
mposolda a27be0cee7 KEYCLOAK-3857 Clustered invalidation cache fixes and refactoring. Support for cross-DC for invalidation caches. 2016-11-16 22:29:23 +01:00
Stan Silvert a0ae8c126e Add comment to test 2016-11-16 12:45:34 -05:00
Stan Silvert 55556fc63c KEYCLOAK-3681: Delete top flow doesn't remove all subflows 2016-11-16 12:43:11 -05:00
mhajas 475c6403cc KEYCLOAK-3916 Remove classes with missing parent 2016-11-16 15:27:35 +01:00
Stian Thorgersen cf17687b8b Merge pull request #3506 from abstractj/KEYCLOAK-3913
[KEYCLOAK-3913] - Native libraries included within SSSD jar
2016-11-16 14:56:53 +01:00
Vlasta Ramik 50339f6f0e Test backwards compatibility of realm import 2016-11-16 13:17:04 +01:00
Stian Thorgersen 26b1541f4a Merge pull request #3476 from abstractj/KEYCLOAK-3875
[KEYCLOAK-3875] - Conditional OTP Forms not working as expected
2016-11-16 12:44:50 +01:00
Stian Thorgersen 1c3a475d1e Merge pull request #3485 from hmlnarik/KEYCLOAK-3071
KEYCLOAK-3071 Add SOAP and PAOS endpoints to valid redirect URIs on SP import
2016-11-16 12:38:45 +01:00
Stian Thorgersen 65136fabdd Merge pull request #3486 from hmlnarik/KEYCLOAK-3488
KEYCLOAK-3488 Fix typo in SamlPrincipal
2016-11-16 12:21:50 +01:00
Stian Thorgersen 70d1ac7162 Merge pull request #3505 from vramik/KEYCLOAK-3910
KEYCLOAK-3910 review clean-start tests
2016-11-16 12:21:21 +01:00
Stian Thorgersen b1f35ff974 Merge pull request #3491 from hmlnarik/KEYCLOAK-3087-XmlEncryptionUtil
KEYCLOAK-3087 XmlEncryptionUtil cleanup, 3DES removal
2016-11-16 12:17:26 +01:00
Stian Thorgersen f5d4554b39 Merge pull request #3494 from stianst/KEYCLOAK-3882
KEYCLOAK-3882 Move more provider factories and SPIs to private
2016-11-16 12:16:18 +01:00
Bruno Oliveira 8a0cb507c5 [KEYCLOAK-3913] - Native libraries included within SSSD jar
- Revert "[KEYCLOAK-3580] - Migrate DBus Java from Unix Socket C library to jnr-unixsocket"
    This reverts commit 6c5d1b9214.
  - Use JNA RPM, instead of Maven
2016-11-16 09:14:05 -02:00
Stian Thorgersen 89a43b8771 Merge pull request #3466 from melahn/update-maven-version
updated requireMavenVersion in parent pom to 3.2.1
2016-11-16 12:13:48 +01:00
Stian Thorgersen 83571dba5d Merge pull request #3495 from rigon/patch-2
Update README.md
2016-11-16 12:13:00 +01:00
Pedro Igor a6d59faf98 Merge pull request #3503 from pedroigor/KEYCLOAK-3339
[KEYCLOAK-3339] - Enable authorization services to EAP6 adapter
2016-11-16 08:38:44 -02:00
Stan Silvert 9512180406 Merge pull request #3502 from ssilvert/hide-role-selector
KEYCLOAK-3905: Role selector sometimes displayed when client full scope
2016-11-15 10:24:01 -05:00
Vlasta Ramik 0f0f20716f Review clean-start tests 2016-11-15 14:29:13 +01:00
Stian Thorgersen b4f072ed81 KEYCLOAK-3882 Move more provider factories and SPIs to private 2016-11-15 12:05:25 +01:00
Pedro Igor 394a9daa64 [KEYCLOAK-3906] - Update IP-BOM 6.0.10.Final 2016-11-15 01:03:35 +00:00
Pedro Igor a3beef754c [KEYCLOAK-3339] - Enable authorization services to EAP6 adapter 2016-11-15 00:26:29 +00:00
Bill Burke 94afba91a0 Merge pull request #3501 from patriot1burke/master
LDAP port to UserStorageSPI
2016-11-14 17:24:39 -05:00
Bill Burke 8794416241 fix db2 2016-11-14 16:22:30 -05:00
Bill Burke f471ad46c9 fix server-private spi changes 2016-11-14 15:28:08 -05:00
Marek Posolda 989a701e95 Merge pull request #3498 from hmlnarik/KEYCLOAK-3734
KEYCLOAK-3734 Unify master changelog of DB2 and other databases
2016-11-14 21:18:27 +01:00
Marek Posolda 37c1c84e04 Merge pull request #3499 from abstractj/KEYCLOAK-3900
[KEYCLOAK-3900] - SSSD Provider: NullPointerException when SSSD is stopped
2016-11-14 21:16:19 +01:00
Bill Burke 39ffd3d756 fix pom 2016-11-14 15:15:20 -05:00
Stan Silvert b920c7b2c4 KEYCLOAK-3905: Role selector sometimes displayed when client full scope
enabled
2016-11-14 15:11:22 -05:00
Pedro Igor a2c54b03c8 Merge pull request #3500 from pedroigor/KEYCLOAK-3554-new
[KEYCLOAK-3554] - Properly handle dependencies between policies when importing settings
2016-11-14 18:10:37 -02:00
Bill Burke 7666387277 rename directory 2016-11-14 15:10:35 -05:00
Bill Burke cc0eb47814 merge 2016-11-14 15:09:41 -05:00
Bill Burke c280634bfa fix tests 2016-11-14 15:06:17 -05:00
Pedro Igor fb1cd9d27d [KEYCLOAK-3554] - Properly handle dependencies between policies when importing settings 2016-11-14 18:55:53 +00:00
Bruno Oliveira b612415a88 [KEYCLOAK-3900] - SSSD Provider: NullPointerException when SSSD is stopped 2016-11-14 16:04:18 -02:00
Hynek Mlnarik 223041bc6b KEYCLOAK-3734 Unify master changelog of DB2 and other databases 2016-11-14 15:19:54 +01:00
Vlasta Ramik ab0514041e Make migration properties available in tests 2016-11-14 13:09:03 +01:00
Hynek Mlnarik 750e942267 KEYCLOAK-3469 Make role mappers account for user groups 2016-11-14 11:38:00 +01:00
Hynek Mlnarik 17c13043d0 KEYCLOAK-3087 XmlEncryptionUtil cleanup, 3DES removal 2016-11-14 10:26:39 +01:00
Gregory Melahn 750075d0dd Will update the README.md file instead
This reverts commit b58bfe56d6.
2016-11-13 12:40:45 -05:00
Gregory Melahn 9df43e3bd2 Merge branch 'update-maven-version' of https://github.com/melahn/keycloak into update-maven-version 2016-11-13 12:25:30 -05:00
Gregory Melahn d1eaace4cf fixed maven prereq version to match pom 2016-11-13 12:24:01 -05:00
Bruno Oliveira 39f40bc005 [KEYCLOAK-3875] - Conditional OTP Forms not working as expected 2016-11-11 15:16:08 -02:00
Stian Thorgersen 6c64494620 Merge pull request #3493 from stianst/master
Try to fix Travis
2016-11-11 17:00:25 +01:00
Stian Thorgersen c9e3fe9a92 Try to fix Travis 2016-11-11 17:00:11 +01:00
Bill Burke 4ce055cede mongo ldap migration script 2016-11-11 09:06:25 -05:00
Ricardo Gonçalves 1e65174867 Update README.md 2016-11-11 12:30:42 +00:00
Pavel Drozd 1052c71124 Merge pull request #3488 from vramik/KEYCLOAK-3885
KEYCLOAK-3885 Add missing migration test for 2.3.0
2016-11-11 09:46:03 +01:00
Stian Thorgersen a86b5988b5 Merge pull request #3484 from hmlnarik/KEYCLOAK-3658
KEYCLOAK-3658 Fixed typo in condition
2016-11-11 09:41:48 +01:00
Stian Thorgersen 088f0ea630 Merge pull request #3490 from stianst/KEYCLOAK-3086
[KEYCLOAK-3086] -  NPE when accessing Account with invalid clientId s…
2016-11-11 09:35:45 +01:00
Stian Thorgersen 08dbdeb57f Merge pull request #3489 from stianst/KEYCLOAK-3882
KEYCLOAK-3882 Split server-spi into server-spi and server-spi-private
2016-11-11 09:35:08 +01:00
Bill Burke 8a5f817030 ldap jpa migration 2016-11-10 16:52:18 -05:00
Bruno Oliveira 675faee593 [KEYCLOAK-3086] - NPE when accessing Account with invalid clientId set as ?referrer, and additional referrer_uri set 2016-11-10 13:49:40 +01:00
Stian Thorgersen 7e33f4a7d1 KEYCLOAK-3882 Split server-spi into server-spi and server-spi-private 2016-11-10 13:28:42 +01:00
Vlasta Ramik 71c88a8dfc Add missing migration test for 2.3.0 2016-11-10 11:02:26 +01:00
Stian Thorgersen 52a4509ada Merge pull request #3483 from hmlnarik/KEYCLOAK-3870-keycloak-saml-xsd
KEYCLOAK-3870 Schema for keycloak-saml.xml
2016-11-10 08:20:24 +01:00
Stian Thorgersen 1ee6df412e Merge pull request #3482 from vramik/KEYCLOAK-2741
KEYCLOAK-2741 remove KEYCLOAK_REMEMBERME when user logs in without rememberme checked
2016-11-10 07:45:07 +01:00
Bill Burke 94076a3b24 admin console ui 2016-11-09 17:34:07 -05:00
Hynek Mlnarik 43002f7a8a KEYCLOAK-3488 Fix typo 2016-11-09 15:11:45 +01:00
Hynek Mlnarik 8816b55843 KEYCLOAK-3071 Add SOAP and PAOS endpoints to valid redirect URIs on SP import 2016-11-09 14:13:53 +01:00
Hynek Mlnarik 9c724b616d KEYCLOAK-3658 Fixed typo in condition 2016-11-09 11:27:33 +01:00
Hynek Mlnarik 025cf5ebaf KEYCLOAK-3870 Schema for keycloak-saml.xml
Updated schema schema for keycloak-saml.xml (added documentation, set
up enumeration instead of free string where applicable per documentation)
and updated existing keycloak-saml.xml files with schema reference.
2016-11-09 10:45:43 +01:00
Vlasta Ramik 6f1b8e1fee remove KEYCLOAK_REMEMBERME when user logs in without rememberme checked + tests 2016-11-09 10:33:46 +01:00
Bill Burke 4880c0443c ldap port admin console 2016-11-08 12:30:20 -05:00
Pavel Drozd c05057748f Merge pull request #3474 from vramik/KEYCLOAK-3489
KEYCLOAK-3489 migration tests - minor fix
2016-11-08 15:38:14 +01:00
Stian Thorgersen de7006a048 Merge pull request #3473 from hmlnarik/KEYCLOAK-3215
KEYCLOAK-3215 Use RSA-OAEP for key encryption
2016-11-08 10:16:54 +01:00
Vlasta Ramik 2b6811a366 migration tests - minor fix 2016-11-08 09:48:15 +01:00
Pavel Drozd 10f9800327 Merge pull request #3469 from mhajas/KEYCLOAK-3853
KEYCLOAK-3853 Fix keyRotation adapter test
2016-11-08 08:34:11 +01:00
Stian Thorgersen 292777259e Merge pull request #3472 from hmlnarik/KEYCLOAK-1881-saml-key-rotation
Keycloak 1881 - SAML key/cert rotation for IdP
2016-11-08 07:56:25 +01:00
Hynek Mlnarik 01c42f9359 KEYCLOAK-3215 Use RSA-OAEP for key encryption 2016-11-08 07:44:59 +01:00
Stian Thorgersen ef48594d85 Merge pull request #3470 from sebastienblanc/KEYCLOAK-3548
KEYCLOAK-3548 : Send 401 when no keycloak.json for EAP6/AS7 Adapter
2016-11-08 07:37:00 +01:00
Stian Thorgersen c9a58fad15 Merge pull request #3464 from stianst/KEYCLOAK-3692
KEYCLOAK-3692
2016-11-08 07:36:39 +01:00
Stian Thorgersen 5b54375490 Merge pull request #3468 from sebastienblanc/KEYCLOAK-3514
KEYCLOAK-3514 : fix servlet logout on bearer-only client
2016-11-08 07:35:44 +01:00
Stian Thorgersen db4f3561a5 Merge pull request #3454 from ssilvert/keystore-error-messages
KEYCLOAK-3817: More detailed errors when loading keys from JKS
2016-11-08 07:33:43 +01:00
Bill Burke f138eecc27 port KerberosLdapTest 2016-11-06 09:15:49 -05:00
Bill Burke 5a86623c88 merge 2016-11-06 08:52:10 -05:00
Bill Burke 14dc0ff92f Merge remote-tracking branch 'upstream/master' 2016-11-05 20:05:01 -04:00
Bill Burke 4302b440ee ldap port 2016-11-05 20:04:53 -04:00
Bill Burke c75dcb90c2 ldap port 2016-11-04 21:25:47 -04:00
Stan Silvert f922164a88 Merge pull request #3471 from ssilvert/otp-low-res
KEYCLOAK-3816: Tweak CSS for 1280 x 720 display
2016-11-04 17:10:22 -04:00
Hynek Mlnarik 36257863db KEYCLOAK-1881 Integration tests for key rotation in SAML IdP 2016-11-04 21:53:43 +01:00
Hynek Mlnarik 14f96fdb4b KEYCLOAK-1881 Wildfly, AS7, EAP Adapters 2016-11-04 21:53:43 +01:00
Hynek Mlnarik 570d71c07b KEYCLOAK-1881 Update client adapter configuration
Client adapter configuration was updated to support for customization
of HttpClient used for key retrieval similarly to OIDC. Further, it is
now possible to specify several static public keys for signature
verification in saml-client.xml.
2016-11-04 21:53:43 +01:00
Hynek Mlnarik 8ae1b1740d KEYCLOAK-1881 Client installers 2016-11-04 21:53:43 +01:00
Hynek Mlnarik 4f9e35c0a1 KEYCLOAK-1881 Support for multiple certificates in broker (hardcoded at the moment) 2016-11-04 21:53:43 +01:00
Hynek Mlnarik 67bb9aef3d KEYCLOAK-1881 Add switch to enable/disable generation of <Extensions>
Some SP clients might be confused by using a standard SAML protocol tag
<Extensions> which is used for signed REDIRECT binding messages to
specify signing key ID. To enable the interoperability, generation of
the tag is disabled by default and can be enabled for individual
clients.
2016-11-04 21:53:43 +01:00
Hynek Mlnarik 1ae268ec6f KEYCLOAK-1881 Include key ID for REDIRECT and use it for validation
Contrary to POST binding, signature of SAML protocol message sent using
REDIRECT binding is contained in query parameters and not in the
message. This renders <dsig:KeyName> key ID hint unusable. This commit
adds <Extensions> element in SAML protocol message containing key ID so
that key ID is present in the SAML protocol message.
2016-11-04 21:53:43 +01:00
Hynek Mlnarik 10deac0b06 KEYCLOAK-1881 KeyLocator implementation for SAML descriptor 2016-11-04 21:53:43 +01:00
Hynek Mlnarik 057cc37b60 KEYCLOAK-1881 Clone OIDC adapter HttpClient tools to SAML adapter
and
KEYCLOAK-1881 Extract httpclient configuration from AdapterConfig
2016-11-04 21:53:43 +01:00
Hynek Mlnarik 70a8255eae KEYCLOAK-1881 Basic key locator support 2016-11-04 21:53:43 +01:00
Hynek Mlnarik d5c3bde0af KEYCLOAK-1881 Make SAML descriptor endpoint return all certificates 2016-11-04 21:53:43 +01:00
Hynek Mlnarik 5d840500af KEYCLOAK-1881 Include key ID in <ds:KeyInfo> in SAML assertions and protocol message
Changes of SAML assertion creation/parsing that are required to allow
for validation of rotating realm key: signed SAML assertions and signed
SAML protocol message now contain signing key ID in XML <dsig:KeyName>
element.
2016-11-04 21:53:43 +01:00
Hynek Mlnarik 904a5c3ca5 KEYCLOAK-3864 Add support for SAML2 <Extensions> element in protocol messages 2016-11-04 21:53:43 +01:00
Stan Silvert 66698f60d4 KEYCLOAK-3816: Tweak CSS for 1280 x 720 display 2016-11-04 15:32:19 -04:00
sebastien blanc 6c18b300a4 add integration test 2016-11-04 07:39:22 +01:00
Stian Thorgersen 6baf9b89fe Merge pull request #3467 from abstractj/KEYCLOAK-3580
[KEYCLOAK-3580] - Migrate DBus Java from Unix Socket C library to jnr-unixsocket
2016-11-04 05:57:02 +01:00
mhajas fd5f7eb165 KEYCLOAK-3853 Fix keyRotation adapter test 2016-11-03 16:04:31 +01:00
sebastien blanc 76c37de1e8 KEYCLOAK-3545: Send 401 if no kc configuration in EAP6/AS7 2016-11-03 15:39:02 +01:00
Pavel Drozd c3f3c5c6a5 Merge pull request #3453 from vramik/KEYCLOAK-2957
KEYCLOAK-2957 test
2016-11-03 15:26:14 +01:00
Pavel Drozd f2b28d8215 Merge pull request #3456 from vramik/KEYCLOAK-3579
KEYCLOAK-3579 add preview profile assumption to tests
2016-11-03 15:25:17 +01:00
Pavel Drozd 672f5d879b Merge pull request #3465 from mhajas/KEYCLOAK-3854
KEYCLOAK-3854 KEYCLOAK-3579 Move EnfrocerConfigTest out from adapter tests
2016-11-03 15:23:39 +01:00
Pavel Drozd 20a6795f74 Merge pull request #3458 from tkyjovsk/KEYCLOAK-3849
KEYCLOAK-3849 Add ability to select keycloak profile in testsuite
2016-11-03 15:21:22 +01:00
Pavel Drozd c1ef4067bc Merge pull request #3459 from mhajas/KEYCLOAK-3850
KEYCLOAK-3850 Fix test-apps-dist zip file name
2016-11-03 15:18:11 +01:00
Pavel Drozd c1fb71c031 Merge pull request #3463 from mhajas/KEYCLOAK-3841
KEYCLOAK-3841 Remove missing dependency
2016-11-03 15:15:57 +01:00
Pavel Drozd 136f3bc5f9 Merge pull request #3457 from mhajas/KEYCLOAK-3728
KEYCLOAK-3728 Test for turned off script based authenticators
2016-11-03 15:15:32 +01:00
Stian Thorgersen 2052a0dff1 Fix 2016-11-03 14:37:07 +01:00
sebastien blanc ee8c986e8e add integration test 2016-11-03 14:30:42 +01:00
Gregory Melahn b58bfe56d6 updated requireMavenVersion in parent pom to 3.2.1 2016-11-03 08:26:27 -04:00
Bruno Oliveira 6c5d1b9214 [KEYCLOAK-3580] - Migrate DBus Java from Unix Socket C library to jnr-unixsocket 2016-11-03 10:25:45 -02:00
Pedro Igor 97be09a3bc Merge pull request #3462 from pedroigor/KEYCLOAK-3704
[KEYCLOAK-3704] - Owner validation and removal
2016-11-03 09:20:16 -02:00
mhajas 6605ba1362 KEYCLOAK-3854 Move EnfrocerConfigTest out from adapter tests 2016-11-03 09:43:49 +01:00
Stian Thorgersen ac18b6c71e KEYCLOAK-3692 2016-11-03 08:33:56 +01:00
mhajas d9069e0955 KEYCLOAK-3841 Remove missing dependency 2016-11-03 08:27:13 +01:00
Stan Silvert 3f98f23422 Merge pull request #3460 from ssilvert/otp-low-res
KEYCLOAK-3816: Broken OTP setup with smaller resolutions
2016-11-02 20:25:19 -04:00
Pedro Igor 706c1e2660 [KEYCLOAK-3704] - Registering UserSinchronizer to remove resources when the owner is removed 2016-11-02 21:40:58 -02:00
Pedro Igor 95d2130405 [KEYCLOAK-3704] - Checkign if owner is a valid user 2016-11-02 21:01:24 -02:00
Pedro Igor 683428a2c2 Merge pull request #3461 from pedroigor/KEYCLOAK-3555
[KEYCLOAK-3555] - Filtering photoz authz config file to update project version
2016-11-02 20:59:03 -02:00
Pedro Igor a315919dfc [KEYCLOAK-3555] - Filtering photoz authz config file to update project version. 2016-11-02 18:11:30 -02:00
Stan Silvert 1b89472451 KEYCLOAK-3817: Fix tests 2016-11-02 14:21:54 -04:00
Stan Silvert ae2a1e929f KEYCLOAK-3816: Broken OTP setup with smaller resolutions 2016-11-02 13:53:15 -04:00
mhajas ad995934b0 KEYCLOAK-3728 Test for turned off script based authenticators 2016-11-02 16:51:55 +01:00
mhajas c5b6507830 KEYCLOAK-3850 Fix test-apps-dist zip file name 2016-11-02 16:49:25 +01:00
Tomas Kyjovsky d7c5f991c8 KEYCLOAK-3579: added ability to select keycloak.profile in testsuite 2016-11-02 15:58:01 +01:00
Vlasta Ramik cef1973ee4 KEYCLOAK-3579 add preview profile assumption to tests 2016-11-02 14:22:03 +01:00
sebastien blanc d98c375495 KEYCLOAK-3514 : Don't call logout for bearer-only client 2016-11-02 11:39:37 +01:00
Pavel Drozd da516a78b3 Merge pull request #3450 from mhajas/KEYCLOAK-3841
KEYCLOAK-3841 Testing of Hawtio console on EAP6 + Fuse integration
2016-11-02 10:54:52 +01:00
Pavel Drozd a0f359c93c Merge pull request #3452 from mhajas/KEYCLOAK-3142
KEYCLOAK-3142 Check ResourceType in AdminEvent test
2016-11-02 10:27:54 +01:00
Pedro Igor 4bf5da8fac Merge pull request #3371 from brewers/bug/cache-dynamic-resource
KEYCLOAK-3752 : Include programmatically created resources in the resource cache
2016-11-02 07:19:04 -02:00
Pedro Igor 44977207e3 Merge pull request #3402 from brewers/feature/js-entitlement-request
KEYCLOAK-3777: Add client api for requesting entitlements with permission requests
2016-11-02 07:15:02 -02:00
Pavel Drozd 893963f339 Merge pull request #3449 from vramik/KEYCLOAK-3489
KEYCLOAK-3489 add profile to tests module for testing migration for productized version
2016-11-01 19:10:13 +01:00
Stan Silvert a5e5f4cf9c KEYCLOAK-3817: More detailed errors when loading keys from JKS 2016-11-01 13:54:34 -04:00
Vlasta Ramik fdb7924d3f add test for KEYCLOAK-2957 to arquillian testsuite 2016-11-01 11:31:19 +01:00
mhajas 782620655f KEYCLOAK-3142 Check ResourceType in AdminEvent test 2016-11-01 11:09:43 +01:00
mhajas 446b57b827 KEYCLOAK-3841 Testing of Hawtio console on EAP6 + fuse integration 2016-10-31 14:35:13 +01:00
Pavel Drozd 2c287af977 Merge pull request #3432 from zschwarz/tech-preview-profile
RHSSO-473 Add preview profile job to RH-SSO CI
2016-10-31 11:24:24 +01:00
Vlasta Ramik 4bd567e610 add profile to tests module for testing migration for productized version 2016-10-31 09:29:16 +01:00
Stan Silvert 35b0872ed9 Merge pull request #3447 from ssilvert/enter-doesnt-submit
KEYCLOAK-3281: Pressing Enter in Identity Provider form causes error
2016-10-28 13:22:20 -04:00
Stan Silvert 89348af59e KEYCLOAK-3281: Pressing Enter in Identity Provider form causes error 2016-10-28 12:06:53 -04:00
Bill Burke ccaac40863 Merge pull request #3437 from patriot1burke/master
disable credential type REST and admin ui
2016-10-28 11:33:16 -04:00
Stian Thorgersen 33bd7ca45f Merge pull request #3446 from mstruk/KEYCLOAK-3767
KEYCLOAK-3767 kcreg should show hint for help if required arguments are missing
2016-10-28 14:56:24 +02:00
Marko Strukelj 408850e7bd KEYCLOAK-3767 kcreg should show hint for help if required arguments are missing 2016-10-28 11:54:48 +02:00
Stian Thorgersen f4a77c3d06 Merge pull request #3444 from stianst/KEYCLOAK-3225
KEYCLOAK-3225
2016-10-28 11:51:35 +02:00
Stian Thorgersen 3ea555bae6 Merge pull request #3443 from stianst/KEYCLOAK-3606
KEYCLOAK-3606
2016-10-28 11:51:21 +02:00
Stian Thorgersen c543035f5a Merge pull request #3442 from stianst/KEYCLOAK-3726
KEYCLOAK-3726
2016-10-28 11:51:03 +02:00
Stian Thorgersen b6b567f948 Merge pull request #3441 from stianst/KEYCLOAK-3733
KEYCLOAK-3733 Set default max results for paginated endpoints
2016-10-28 10:36:24 +02:00
Stian Thorgersen 479295cfd2 KEYCLOAK-3225
Modifying user's Identity Provider Links requires manage-realm client role
2016-10-28 10:25:41 +02:00
Stian Thorgersen a78cfa4b2c Merge pull request #3440 from stianst/KEYCLOAK-3667
KEYCLOAK-3667
2016-10-28 10:13:06 +02:00
Stian Thorgersen c6caeb3bec Merge pull request #3439 from stianst/KEYCLOAK-3828
KEYCLOAK-3828
2016-10-28 10:12:51 +02:00
Stian Thorgersen 5f58c96258 KEYCLOAK-3606
keycloak.js calls localStorage.key(localStorage.length) indirectly
2016-10-28 10:05:57 +02:00
Stian Thorgersen bb1d255c40 KEYCLOAK-3726
Add supported WildFly version to server overlay
2016-10-28 09:43:51 +02:00
Stian Thorgersen a9d47287ee KEYCLOAK-3733 Set default max results for paginated endpoints 2016-10-28 09:15:05 +02:00
Stian Thorgersen 3d46b4c425 KEYCLOAK-3667 2016-10-28 08:43:24 +02:00
Stian Thorgersen db428dad1d KEYCLOAK-3828
Component uses wrong role
2016-10-28 07:56:44 +02:00
Stian Thorgersen 4cc44bc174 Merge pull request #3420 from bdalenoord/master
KEYCLOAK-3807: Calling 'setHandler' is forbidden
2016-10-28 06:45:47 +02:00
Stian Thorgersen 3e5f490882 Merge pull request #3424 from sebastienblanc/KEYCLOAK-3669
KEYCLOAK-3669: Fix Tomcat Adapter for 8.5.5
2016-10-28 06:45:01 +02:00
Stian Thorgersen 7579606ac4 Merge pull request #3431 from mstruk/KEYCLOAK-3766
KEYCLOAK-3766 kcreg should display help when no arguments are passed to command
2016-10-28 06:44:07 +02:00
Stian Thorgersen ee4712b2e9 Merge pull request #3434 from sebastienblanc/KEYCLOAK-3796
KEYCLOAK-3796 : add missing setters
2016-10-28 06:42:59 +02:00
Stian Thorgersen 2d1a458f5d Merge pull request #3408 from hmlnarik/KEYCLOAK-3793
KEYCLOAK-3793 Replace httpclient 4.4 calls with those available in 4.3
2016-10-28 06:41:48 +02:00
Stian Thorgersen e958bd254a Merge pull request #3435 from stianst/KEYCLOAK-3331
KEYCLOAK-3331 Reset password leads to 400 bad request when link is op…
2016-10-28 06:40:48 +02:00
Stian Thorgersen 0c6b47b9f2 Merge pull request #3433 from stianst/KEYCLOAK-3641
KEYCLOAK-3641 Clicking an invalid verification link due to re-send re…
2016-10-28 06:40:27 +02:00
Bill Burke 4cea1919f6 Merge remote-tracking branch 'upstream/master' 2016-10-27 16:17:12 -04:00
Bill Burke 91da6a47d7 disable cred types ui 2016-10-27 16:17:02 -04:00
Marek Posolda f13d759a61 Merge pull request #3436 from mposolda/master
KEYCLOAK-3800 Weird behavior when adding Trusted Hosts as Client Regi…
2016-10-27 21:23:54 +02:00
mposolda 21e423ad5f KEYCLOAK-3800 Weird behavior when adding Trusted Hosts as Client Registration Policy 2016-10-27 18:56:05 +02:00
Stian Thorgersen c6ac3266f0 KEYCLOAK-3641 Clicking an invalid verification link due to re-send removes the email verification key from the session 2016-10-27 16:16:52 +02:00
sebastien blanc 621d234adc renaming fields to align with json names 2016-10-27 16:16:30 +02:00
Stian Thorgersen ab72b2b141 KEYCLOAK-3331 Reset password leads to 400 bad request when link is opened in a different browser session 2016-10-27 16:04:45 +02:00
sebastien blanc e8dd05619b KEYCLOAK-3796 : add missing setters 2016-10-27 14:41:52 +02:00
zschwarz 25909b5e79 RHSSO-473 Add preview profile job to RH-SSO CI 2016-10-27 13:09:20 +02:00
Marko Strukelj 5925a99800 KEYCLOAK-3766 kcreg should display help when no arguments are passed to command 2016-10-27 11:08:36 +02:00
Bill Burke 6e773c84e8 Merge remote-tracking branch 'upstream/master' 2016-10-26 15:48:55 -04:00
Bill Burke 73e3f2a89b REST API for disable cred type 2016-10-26 15:48:45 -04:00
Bill Burke 69dddfa73a Merge pull request #3428 from patriot1burke/master
storage link on user detail
2016-10-26 14:58:33 -04:00
Stan Silvert 3b8972e027 Merge pull request #3423 from ssilvert/otp-low-res
KEYCLOAK-3816: Broken OTP setup with smaller resolutions
2016-10-26 13:58:29 -04:00
Stan Silvert 50b181e804 Merge pull request #3427 from ssilvert/highlight-menu
KEYCLOAK-3795: Hightlight not working in nav sidebar
2016-10-26 09:29:34 -04:00
Stian Thorgersen 21459d0f43 Merge pull request #3430 from stianst/KEYCLOAK-3819
KEYCLOAK-3819 Add support to change name of components
2016-10-26 11:39:27 +02:00
Stian Thorgersen fbe1fd8f98 Merge pull request #3429 from stianst/KEY-FIXES
Various fixes for key providers
2016-10-26 11:38:33 +02:00
Stian Thorgersen a8c844828d KEYCLOAK-3819 Add support to change name of components 2016-10-26 10:00:58 +02:00
Stian Thorgersen c0959fc562 KEYCLOAK-3808 Fix enable and active switches on default provider 2016-10-26 09:49:18 +02:00
Stian Thorgersen 6a86bb8ebe KEYCLOAK-3809 Add required to display name for key provider 2016-10-26 09:38:57 +02:00
Stian Thorgersen 76e2598c5c KEYCLOAK-3805 Use ng-if instead of ng-show in component-config template 2016-10-26 09:30:00 +02:00
Stian Thorgersen bf5e724f00 KEYCLOAK-3815 Prevent resubmission of form when creating key provider 2016-10-26 09:20:37 +02:00
Stian Thorgersen 112538a220 Merge pull request #3425 from mstruk/KEYCLOAK-2366
KEYCLOAK-2366 Unable to download key in Safari
2016-10-26 09:04:31 +02:00
Stian Thorgersen 23ea1f8939 Merge pull request #3411 from mstruk/KEYCLOAK-3789
KEYCLOAK-3789 KcRegTests are failing on CI
2016-10-26 08:57:13 +02:00
Stian Thorgersen 93f9def3e8 Merge pull request #3422 from stianst/KEYCLOAK-3811
KEYCLOAK-3811 User federation screen is missing dropdown with provide…
2016-10-26 08:48:21 +02:00
Bill Burke 8a7703b0ef fix link 2016-10-25 20:41:18 -04:00
Bill Burke 2578df1a82 Merge pull request #3426 from patriot1burke/master
user spi cache policy
2016-10-25 20:39:52 -04:00
Marko Strukelj 8dca101069 KEYCLOAK-3789 KcRegTests are failing on CI
- Ignore occasional extra empty lines at end of stream
2016-10-26 01:30:42 +02:00
Marko Strukelj 4ee759d9ec KEYCLOAK-3789 KcRegTests are failing on CI 2016-10-26 01:06:33 +02:00
Bill Burke 3129e392b0 storage link on user detail 2016-10-25 16:50:34 -04:00
Stan Silvert 0d0d614b99 KEYCLOAK-3795: Hightlight not working in nav sidebar 2016-10-25 16:32:26 -04:00
Bill Burke 3fec344fa3 finish cache policy 2016-10-25 16:13:48 -04:00
Bill Burke f8a78d5565 finish cache policy 2016-10-25 16:13:22 -04:00
Bill Burke 68e853b4bd Merge remote-tracking branch 'upstream/master' 2016-10-25 13:40:32 -04:00
Bill Burke 2cc4a920a0 fix 2016-10-25 13:40:24 -04:00
Bill Burke b67cb0e97a Merge remote-tracking branch 'upstream/master' 2016-10-25 11:44:22 -04:00
Marko Strukelj 1b2f6b763a KEYCLOAK-2366 Unable to download key in Safari
- Updated FileSaver.js to version 1.3.3
2016-10-25 16:38:26 +02:00
sebastien blanc 1c2f49ab4e KEYCLOAK-3669: Fix Tomcat Adapter for 8.5.5 2016-10-25 16:27:41 +02:00
Stan Silvert 3c237760b6 KEYCLOAK-3816: Broken OTP setup with smaller resolutions 2016-10-25 08:38:29 -04:00
Bas Dalenoord 859c5cbe1e KEYCLOAK-3807: Use 'setSecurityHandler';
'insertHandler' is a method introduced in Jetty 9, Jetty 8 should
however be supported so 'setSecurityHandler' does the same thing but
works for both 8.x and 9.x;
2016-10-25 13:59:07 +02:00
Stian Thorgersen 28f31ce57f KEYCLOAK-3811 User federation screen is missing dropdown with providers in RH-SSO theme 2016-10-25 12:44:02 +02:00
Stian Thorgersen 317749a7fd Merge pull request #3419 from stianst/KEYCLOAK-3781
KEYCLOAK-3781 Don't allow deleting the last key provider
2016-10-25 12:31:00 +02:00
Stian Thorgersen 94f33473a8 Merge pull request #3409 from matejonnet/master
Fix typo in exception message.
2016-10-25 12:30:10 +02:00
Pavel Drozd 04f2b9ac01 Merge pull request #3368 from zschwarz/oidc-filter
KEYCLOAK-3747 Servlet filter dependencies
2016-10-25 11:44:47 +02:00
Pavel Drozd 7882a6513c Merge pull request #3415 from vramik/KEYCLOAK-3489
KEYCLOAK-3489 add profile for testing migration for productized version
2016-10-25 11:07:02 +02:00
Stian Thorgersen 7e6c49fc74 Merge pull request #3413 from mstruk/KEYCLOAK-3801
KEYCLOAK-3801 Remove --unsafe from 'kcreg update'
2016-10-25 10:53:08 +02:00
Stian Thorgersen 765c3a7b0d Merge pull request #3418 from stianst/KEYCLOAK-3782
KEYCLOAK-3782 Keysize for rsa-generated should be a dropdown
2016-10-25 10:22:00 +02:00
Bas Dalenoord f3df185bb5 KEYCLOAK-3807: Calling 'setHandler' is forbidden
Use 'insertHandler' as suggested in the 'setHandler's log warning.
2016-10-25 09:14:03 +02:00
Stian Thorgersen 8c42167302 KEYCLOAK-3781 Don't allow deleting the last key provider 2016-10-25 08:57:16 +02:00
Stian Thorgersen 4b27e66714 KEYCLOAK-3782 Keysize for rsa-generated should be a dropdown 2016-10-25 08:52:02 +02:00
Bill Burke 3e28ac1e46 user spi cache policy 2016-10-24 15:36:37 -04:00
Vlasta Ramik 3ca836ffdc add profile for testing migration for productized version 2016-10-24 15:20:17 +02:00
zschwarz bc718471da KEYCLOAK-3747 Servlet filter dependencies 2016-10-24 15:01:16 +02:00
Marko Strukelj e24b27c79e KEYCLOAK-3801 Remove --unsafe from 'kcreg update' 2016-10-24 11:33:06 +02:00
Stan Silvert dcaac76b4b Merge pull request #3414 from ssilvert/cluster-node
KEYCLOAK-2206: Hide last registration field when adding new cluster node
2016-10-21 16:57:09 -04:00
Stan Silvert d741349830 KEYCLOAK-2206: Hide last registration field when adding new cluster node
for client.
2016-10-21 13:06:03 -04:00
Marek Posolda cd3f9ee27c Merge pull request #3407 from mposolda/KEYCLOAK-3792
KEYCLOAK-3792 Fix failing tests on MySQL
2016-10-21 13:47:48 +02:00
Marek Posolda 3320d34c2b Merge pull request #3406 from mposolda/master
KEYCLOAK-3779 ClientRegistrationPolicies test failing
2016-10-21 13:47:15 +02:00
Matej Lazar 036407fd90 Fix type in exception message. 2016-10-21 12:59:59 +02:00
Hynek Mlnarik 8bca84c0e7 KEYCLOAK-3793 Replace httpclient 4.4 calls with those available in 4.3 2016-10-21 11:34:08 +02:00
mposolda f7a6d39b01 KEYCLOAK-3792 Fix failing tests on MySQL 2016-10-21 11:21:01 +02:00
mposolda c79378ca5f KEYCLOAK-3779 ClientRegistrationPolicies test failing 2016-10-21 10:24:51 +02:00
Stian Thorgersen 4d47f758fc Merge pull request #3405 from stianst/master
Bump version
2016-10-21 10:11:59 +02:00
Stian Thorgersen e390cffa63 KEYCLOAK-3779
ClientRegistrationPoliciesTest failing on Travis
2016-10-21 08:11:11 +02:00
Stian Thorgersen c615674cbb Bump version 2016-10-21 07:03:15 +02:00
Stian Thorgersen 1a4f9e656d Merge pull request #3398 from stianst/KEYCLOAK-3774
KEYCLOAK-3774 Fix keycloak.js with prompt=none and new stricter redir…
2016-10-21 06:34:43 +02:00
Bill Burke e1a214351f Merge pull request #3391 from pulgupta/master
Null pointer exception after users logs in
2016-10-20 16:06:30 -04:00
Stian Thorgersen 9801f09a93 KEYCLOAK-3774 Fix keycloak.js with prompt=none and new stricter redirect_uri 2016-10-20 21:31:25 +02:00
Stian Thorgersen 9f8fb98083 Merge pull request #3382 from stianst/KEYCLOAK-3763
KEYCLOAK-3763
2016-10-20 21:24:11 +02:00
Bill Burke fd86f3bda8 Merge pull request #3399 from patriot1burke/master
realm cache event
2016-10-20 14:02:41 -04:00
Stian Thorgersen 390becb935 Merge pull request #3394 from hmlnarik/KEYCLOAK-3769
KEYCLOAK-3769 Workaround for ChangeLogService stale instance
2016-10-20 19:43:24 +02:00
Stian Thorgersen 7d8c79b17b Merge pull request #3397 from hmlnarik/KEYCLOAK-3775
KEYCLOAK-3775 Example: Add missing org.liquibase dependency to CLI command
2016-10-20 19:42:32 +02:00
Stian Thorgersen 772a1580ff Merge pull request #3403 from mposolda/master
KEYCLOAK-3773 Testsuite failing with mongo
2016-10-20 19:31:37 +02:00
Stian Thorgersen 5a00aaefa8 KEYCLOAK-2594
bind credential being leaked in admin tool JSON response

KEYCLOAK-2972
Keycloak leaks configuration passwords in Admin Event logs
2016-10-20 19:30:59 +02:00
Stian Thorgersen 1bf24d26a4 Merge pull request #3395 from stianst/master
KEYCLOAK-3772
2016-10-20 19:27:03 +02:00
Stian Thorgersen 284f49e584 Merge pull request #3396 from mstruk/KEYCLOAK-3740
KEYCLOAK-3740 kcreg.sh doesn't support symlinking
2016-10-20 19:26:53 +02:00
Stan Silvert e7ab53dd5f Merge pull request #3400 from ssilvert/title-addr-theme
KEYCLOAK-3776: Title for account management broken for address theme
2016-10-20 12:41:40 -04:00
Bill Burke 139158e614 fix 2016-10-20 12:36:24 -04:00
mposolda c4ad84945c KEYCLOAK-3773 Testsuite failing with mongo 2016-10-20 17:47:34 +02:00
Cherian Mathew 94d4afa11c Refactor entitlement request argument name 2016-10-20 17:24:41 +02:00
Cherian Mathew d7d91cfbc0 Add client api for requesting entitlements with permission requests 2016-10-20 17:09:41 +02:00
Stan Silvert 757d5c16df KEYCLOAK-3776: Title for account management broken for address theme 2016-10-20 10:38:21 -04:00
Bill Burke 36c2422fa4 realm cache event 2016-10-20 10:35:28 -04:00
Marek Posolda ec0f222f7e Merge pull request #3393 from mposolda/master
KEYCLOAK-3770 OIDC registration with id_token grant type should set p…
2016-10-20 16:35:08 +02:00
Hynek Mlnarik 969b44768a KEYCLOAK-3775 Example: Add missing org.liquibase dependency to CLI command 2016-10-20 15:35:08 +02:00
Marko Strukelj db0024d857 KEYCLOAK-3740 kcreg.sh doesn't support symlinking
- fix buggy patch
2016-10-20 15:05:17 +02:00
Stian Thorgersen 839c4e8ede KEYCLOAK-3772
Login with Twitter is not working
2016-10-20 15:05:07 +02:00
Hynek Mlnarik d59f6e397f KEYCLOAK-3769 Workaround for ChangeLogService stale instance
Before applying update or validation operation, Liquibase
ChangeLogService needs to be reset to forget about previously set
change log table. Reason is that the factory creating the
ChangeLogService caches this service per DB connection, not per
Liquibase object, hence changes in name of change log table needed for
custom JpaEntityProvider are not reflected and use only the first
change log table name, i.e. the change log table of the main database.
2016-10-20 14:57:51 +02:00
mposolda 072ccb5c61 KEYCLOAK-3770 OIDC registration with id_token grant type should set publicClient flag to true 2016-10-20 14:10:53 +02:00
Stian Thorgersen 9c7e9da9fa Merge pull request #3392 from mstruk/KEYCLOAK-3740
KEYCLOAK-3740 kcreg.sh doesn't support symlinking
2016-10-20 13:09:38 +02:00
Marek Posolda 3abb44c1da Merge pull request #3390 from mposolda/master
KEYCLOAK-3768 Fix executing embedded apacheDS via maven exec plugin
2016-10-20 12:35:26 +02:00
Marko Strukelj 584d2e700d KEYCLOAK-3740 kcreg.sh doesn't support symlinking 2016-10-20 10:14:42 +02:00
Pulkit Gupta 8ee566f5fa Merge branch 'master' of github.com:pulgupta/keycloak 2016-10-20 13:39:54 +05:30
Pulkit Gupta 8e9db1be96 fixed null pointer exception when principal is null 2016-10-20 13:39:04 +05:30
mposolda acbb17a331 KEYCLOAK-3768 Fix executing embedded apacheDS via maven exec plugin 2016-10-20 10:08:33 +02:00
Pulkit Gupta 115f95d90e fixed null pointer exception when principal is null 2016-10-20 13:36:25 +05:30
Marek Posolda 9f5acccc4f Merge pull request #3384 from mposolda/master
KEYCLOAK-3753 Deploying app secured with OIDC to EAP6 results with Error
2016-10-20 08:32:58 +02:00
Stian Thorgersen e39d28517c Merge pull request #3381 from raehalme/KEYCLOAK-3755-master
KEYCLOAK-3755: isBearerTokenRequest and isBasicAuthRequest are now case-insensitive
2016-10-20 07:12:27 +02:00
Stian Thorgersen 8b5d171cb5 Merge pull request #3385 from mstruk/KEYCLOAK-3743
KEYCLOAK-3743 kcreg.sh without any options exists with 0
2016-10-20 06:41:13 +02:00
Stian Thorgersen cddacab297 Merge pull request #3388 from aaronharnly/aaronharnly-readme-typo
README.md typo fix
2016-10-20 06:37:38 +02:00
Stian Thorgersen dfc09b69a8 Merge pull request #3380 from stianst/KEYCLOAK-3364
KEYCLOAK-3364 Fix for dns that ends with digit
2016-10-20 06:24:50 +02:00
Stian Thorgersen d2e0432afb Merge pull request #3389 from patriot1burke/master
KEYCLOAK-3651
2016-10-20 06:24:15 +02:00
Bill Burke 34d80c9083 KEYCLOAK-3651 2016-10-19 20:28:33 -04:00
Bill Burke 06c08a9cff Merge pull request #3249 from gautric/master
KEYCLOAK-3602 - NPE into SAML DeploymentBuilder build
2016-10-19 20:08:16 -04:00
Bill Burke 9f00f693c6 Merge pull request #3387 from ssilvert/spelling-represenation
KEYCLOAK-3496: Spelling Error in Admin GUI Documentation
2016-10-19 19:59:41 -04:00
Bill Burke 1f00625930 Merge pull request #3386 from patriot1burke/master
test component import/export
2016-10-19 19:58:59 -04:00
Aaron Harnly 58d4d0596e README.md
Small typo fix: specficied -> specified
2016-10-19 17:29:23 -04:00
Stan Silvert ad59cd618e Merge pull request #3383 from ssilvert/duplicate-fed-provider
KEYCLOAK-2892: Bad error when create fed provider w/ same name.
2016-10-19 16:40:58 -04:00
Stan Silvert ac80f99e8c KEYCLOAK-3496: Spelling Error in Admin GUI Documentation 2016-10-19 16:33:59 -04:00
Bill Burke cdf7dd3a6c Merge pull request #3372 from patriot1burke/master
onCreate for Components
2016-10-19 16:21:20 -04:00
Bill Burke 97dd10883c test component import/export 2016-10-19 16:20:59 -04:00
Marek Posolda e6de2e7792 Merge pull request #3365 from puntogil/master
KEYCLOAK-3519 port to apache-ldap-api-1.0.0-M33
2016-10-19 21:51:44 +02:00
mposolda 7f825eb415 KEYCLOAK-3753 Deploying app secured with OIDC to EAP6 results with Error 2016-10-19 21:45:35 +02:00
Bill Burke a7f2130eae whoops 2016-10-19 15:29:21 -04:00
Marko Strukelj 85db8ea44f KEYCLOAK-3743 kcreg.sh without any options exists with 0 2016-10-19 21:23:31 +02:00
Marek Posolda 2acea2b2ee Merge pull request #3370 from mposolda/master
Client registration policies - polishing
2016-10-19 20:06:29 +02:00
Bill Burke 2391a00aa5 Merge remote-tracking branch 'upstream/master' 2016-10-19 14:01:35 -04:00
Bill Burke 934ea1c33c KEYCLOAK-3562 2016-10-19 14:01:21 -04:00
Stian Thorgersen 84bf546911 Merge pull request #3378 from stianst/KEYCLOAK-3756
KEYCLOAK-3756
2016-10-19 19:55:57 +02:00
Stian Thorgersen 473bd5fc78 Merge pull request #3377 from stianst/KEYCLOAK-3706
KEYCLOAK-3706
2016-10-19 19:55:36 +02:00
Stan Silvert 9d098e9068 KEYCLOAK-2892: Bad error when create fed provider w/ same name. 2016-10-19 13:32:28 -04:00
Stian Thorgersen 8c1e5c5aae Merge pull request #3374 from mstruk/KEYCLOAK-3742
KEYCLOAK-3742 kcreg config prints null
2016-10-19 19:27:57 +02:00
Stian Thorgersen af5e8f7b09 Merge pull request #3376 from stianst/KEYCLOAK-1862
KEYCLOAK-1862
2016-10-19 19:27:29 +02:00
Stian Thorgersen 681cb39862 Merge pull request #3375 from stianst/KEYCLOAK-3754
KEYCLOAK-3754
2016-10-19 19:27:01 +02:00
Pedro Igor 7dee39bbaa Merge pull request #3302 from brewers/master
KEYCLOAK-3703 Fix entitlement function call in authorization
2016-10-19 14:47:32 -02:00
Thomas Raehalme e8ce9704c1 isBearerTokenRequest and isBasicAuthRequest is now case-insensitive. 2016-10-19 19:41:59 +03:00
Stian Thorgersen ffce2023c0 KEYCLOAK-3364 Fix for dns that ends with digit 2016-10-19 18:41:43 +02:00
Stian Thorgersen 320110abaa KEYCLOAK-3756 2016-10-19 18:00:33 +02:00
Stian Thorgersen f9a8f805c8 KEYCLOAK-3706
Using invalid Registration Access Token results in 404 rather than 401
2016-10-19 17:55:05 +02:00
mposolda 3779bfb6b4 KEYCLOAK-3666 client registration policies - polishing 2016-10-19 17:45:23 +02:00
mposolda 4136d76b7e Minor javadoc update 2016-10-19 17:45:23 +02:00
mposolda 964cd50f1d KEYCLOAK-3666 Added client reg policies for maxClients and clientDisabled 2016-10-19 17:45:23 +02:00
Stian Thorgersen 61fa152e62 Merge pull request #3277 from ahus1/KEYCLOAK-2977-spring-cloud-rebinder-fix
KEYCLOAK-2977: fix re-binding problem with spring-cloud
2016-10-19 17:32:40 +02:00
Stian Thorgersen 7f04dd20b3 KEYCLOAK-1862 2016-10-19 17:28:22 +02:00
Stian Thorgersen 9b5277d83d KEYCLOAK-3754
Identity providers screen is missing dropdown with providers in RH-SSO theme
2016-10-19 17:24:27 +02:00
Stian Thorgersen b2ea49212c Merge pull request #3373 from stianst/KEYCLOAK-3625
KEYCLOAK-3625 Fix url
2016-10-19 17:08:22 +02:00
Stian Thorgersen bd8e435164 KEYCLOAK-3625 Fix url 2016-10-19 17:07:01 +02:00
Pavel Drozd f8f9ebf588 Merge pull request #3362 from mhajas/KEYCLOAK-3654
KEYCLOAK-3654 Fix NullPointerException in lambda
2016-10-19 16:39:03 +02:00
Marko Strukelj 79f53c5513 KEYCLOAK-3742 kcreg config prints null
- proper no args check across the board
 - added --help option to all commands
2016-10-19 16:36:25 +02:00
Alexander Schwartz c2692cc0ac KEYCLOAK-2977: fix re-binding problem with spring-cloud 2016-10-19 16:07:28 +02:00
Bill Burke fdb8c04ac9 Merge remote-tracking branch 'upstream/master' 2016-10-19 10:06:48 -04:00
Bill Burke 46e32b36d2 onCreate for Components 2016-10-19 10:06:09 -04:00
Stian Thorgersen 36c367a3bc Merge pull request #3369 from stianst/KEYCLOAK-3625
KEYCLOAK-3625
2016-10-19 15:56:57 +02:00
Stian Thorgersen 1b24d2edd8 KEYCLOAK-3625 More work on the issue 2016-10-19 14:21:50 +02:00
sebastien blanc 32df5225cf add check on list size 2016-10-19 14:21:41 +02:00
sebastien blanc 116f5f5795 KEYCLOAK-3625: conform to oidc specs 2016-10-19 14:21:41 +02:00
Stian Thorgersen bbc1d26b72 Merge pull request #3367 from stianst/KEYCLOAK-3745
KEYCLOAK-3745 Change attributes in user rep
2016-10-19 14:01:39 +02:00
Stian Thorgersen 6f43c1f09f Merge pull request #3366 from hmlnarik/KEYCLOAK-3698
KEYCLOAK-3698 Manual migration - custom JpaEntityProvide changelog table
2016-10-19 14:01:23 +02:00
Stan Silvert 3c8aaaa61f Merge pull request #3353 from ssilvert/confirm-flow-delete
KEYCLOAK-2918: Confirm before custom auth flow deletion
2016-10-19 07:55:51 -04:00
Pavel Drozd e2b42b24d0 Merge pull request #3361 from vramik/KEYCLOAK-3619
KEYCLOAK-3619 minor fix
2016-10-19 12:15:59 +02:00
Stian Thorgersen 4efe12cb93 KEYCLOAK-3745 Change attributes in user rep 2016-10-19 12:15:13 +02:00
Hynek Mlnarik 49d3d3f6e3 KEYCLOAK-3698 Manual migration - custom JpaEntityProvide changelog table
Reflect in the SQL script that custom JpaEntityProviders have their
own changelog tables, and issue DDL commands to create them when
initializing a new database.
2016-10-19 12:08:14 +02:00
Stian Thorgersen 53fcc1bec2 Merge pull request #3359 from stianst/KEYCLOAK-3737
KEYCLOAK-3737
2016-10-19 12:06:12 +02:00
gil 490b7f6ba4 KEYCLOAK-3519 port to apache-ldap-api-1.0.0-M33 2016-10-19 11:29:31 +02:00
Cherian Mathew 2bba6af6d9 Include programmatically created resources in the resource cache 2016-10-19 11:04:22 +02:00
mhajas 218065a349 KEYCLOAK-3654 Fix jwks-url in integration-arquillian 2016-10-19 10:27:53 +02:00
Vlasta Ramik 98aa516d74 KEYCLOAK-3619 minor fix 2016-10-19 09:59:30 +02:00
Stian Thorgersen 24715eabec KEYCLOAK-3737
Migration problem from version 1.9.8 to 2.2.1
2016-10-19 09:06:55 +02:00
Stian Thorgersen f2f508ac2e Merge pull request #3357 from stianst/KEYCLOAK-3107
KEYCLOAK-3017 Expose Location header in cors request to admin endpoint
2016-10-19 08:45:18 +02:00
Stian Thorgersen 13220e1d38 Merge pull request #3355 from stianst/KEYCLOAK-2699
KEYCLOAK-2699 Potential for NPE in DirImportProvider.getRealmsToImport
2016-10-19 07:35:54 +02:00
Stian Thorgersen 116027bd7b Merge pull request #3354 from stianst/KEYCLOAK-2488
KEYCLOAK-2488 Token introspection returns wrong response for invalid …
2016-10-19 07:33:25 +02:00
Stian Thorgersen 14a51e589d Merge pull request #3325 from mstruk/cli-reg
KEYCLOAK-2084 Client Registration CLI
2016-10-19 06:33:45 +02:00
Stian Thorgersen 36433bb8ff Merge pull request #3310 from ramunask/lt-translations-for-2.3
KEYCLOAK-3695 Lithuanian locale update for 2.3 version
2016-10-19 06:31:46 +02:00
Stian Thorgersen edb66d6fd3 Tweak travis 2016-10-19 06:22:12 +02:00
Stian Thorgersen a0bbb1e7a2 Merge pull request #3356 from stianst/KEYCLOAK-3707
KEYCLOAK-3707 Test retrieving missing client with registration access…
2016-10-19 06:18:43 +02:00
Stian Thorgersen a33997976f KEYCLOAK-3017 Expose Location header in cors request to admin endpoint 2016-10-18 21:27:46 +02:00
Stian Thorgersen 3250562d28 KEYCLOAK-3707 Test retrieving missing client with registration access token 2016-10-18 20:56:40 +02:00
Stian Thorgersen 0a8d1e28f1 KEYCLOAK-2699 Potential for NPE in DirImportProvider.getRealmsToImport 2016-10-18 20:31:51 +02:00
Stian Thorgersen 29538332d9 KEYCLOAK-2488 Token introspection returns wrong response for invalid token 2016-10-18 20:28:14 +02:00
Bill Burke d941e07169 Merge pull request #3350 from patriot1burke/master
federated import/export to json
2016-10-18 14:15:25 -04:00
Pavel Drozd ba1fa34c56 Merge pull request #3330 from mhajas/KEYCLOAK-3268
KEYCLOAK-3268 KEYCLOAK-3100 Validate SAML Idp and SP metadata
2016-10-18 20:08:13 +02:00
Stan Silvert 5cef34d61a KEYCLOAK-2918: Confirm before custom auth flow deletion 2016-10-18 13:44:13 -04:00
Stian Thorgersen a87c08416d Merge pull request #3346 from hmlnarik/KEYCLOAK-3588
KEYCLOAK-3698 Make manual update scripts play nicely with custom JpaEntityProviders
2016-10-18 19:41:02 +02:00
Stian Thorgersen 4f695cfe76 Merge pull request #3347 from vramik/KEYCLOAK-3619
KEYCLOAK-3619 Update default datasource definition to non-XA
2016-10-18 19:40:34 +02:00
Stian Thorgersen e41d11877f Merge pull request #3349 from stianst/KEYCLOAK-2741
KEYCLOAK-2741
2016-10-18 19:39:54 +02:00
Stian Thorgersen 3c08153e33 Merge pull request #3348 from stianst/KEYCLOAK-3358
KEYCLOAK-3358
2016-10-18 19:39:32 +02:00
Marek Posolda c9507aa5c7 Merge pull request #3351 from mposolda/master
KEYCLOAK-3653 CORS headers not sent in certs endpoint
2016-10-18 19:12:01 +02:00
mposolda b62e6e2751 KEYCLOAK-3653 CORS headers not sent in certs endpoint 2016-10-18 16:57:06 +02:00
Stian Thorgersen 74dad004e3 KEYCLOAK-2741
Don't remove KEYCLOAK_REMEMBERME cookie when sso session expires.
2016-10-18 16:14:36 +02:00
Bill Burke 2199df71bf Merge remote-tracking branch 'upstream/master' 2016-10-18 10:14:00 -04:00
Bill Burke 4182e4d92a federated import/export 2016-10-18 10:13:51 -04:00
Stian Thorgersen 1583937295 KEYCLOAK-3358
Welcome page hardcoded to incorrect URL & references incorrect script
2016-10-18 16:07:44 +02:00
Marek Posolda 940237ee78 Merge pull request #3304 from hmlnarik/KEYCLOAK-2964
KEYCLOAK-2964 - Fix groups not applied for authentication of admin operations
2016-10-18 14:50:12 +02:00
Marek Posolda 3986ce2ce0 Merge pull request #3345 from mposolda/master
KEYCLOAK-3499 Fixes in OIDCProtocolMapper support for includeInUserInfo
2016-10-18 14:28:29 +02:00
Stian Thorgersen 4b56743788 Merge pull request #3343 from stianst/KEYCLOAK-2884
KEYCLOAK-2884 Remove ClientTemplateResource.getKeycloakApplication()
2016-10-18 14:08:50 +02:00
Hynek Mlnarik 658988ccd0 KEYCLOAK-3588 Make manual update scripts play nicely with custom JpaEntityProviders 2016-10-18 13:59:24 +02:00
mposolda a7287aad36 KEYCLOAK-3499 More fixes for IncludeInUserInfo. Fixing tests and migration 2016-10-18 13:09:30 +02:00
Thomas Darimont c3b577de11 KEYCLOAK-3499 Revise OIDCProtocolMapper support
Moved methods `transformUserInfoToken`, `transformAccessToken`,
`transformIDToken` to the `AbstractOIDCProtocolMapper` base class
in order to reduce code duplication.
Previously every mapper implemented at least one or two of those
methods with exactly the same code.
Having those methods in the base class ensures that the code is the
same for all mappers. Since the mentioned methods are declared
on the `OIDCIDTokenMapper`, `OIDCAccessTokenMapper` and `UserInfoTokenMapper`
interfaces `AbstractOIDCProtocolMapper` implementations can now choose
how they should be handled by the `TokenManager`
by implementing the desired set of interfaces `*TokenMapper`-interfaces.

I think this provides a good balance between ease of use, reduced code duplication
and ensured backwards compatiblity.
Existing protocol mapper implementations will still work since they just implement
their own logic for `transformUserInfoToken`, `transformAccessToken`,
`transformIDToken`.

The "claim" information provided by a `ProtocolMapper` to a `*Token` can now
be provided by overriding the `AbstractOIDCProtocolMapper.setClaim` method.

Adapted all eligible ProtocolMapper implementations within the
`org.keycloak.protocol.oidc.mappers` package accordingly.
2016-10-18 13:09:30 +02:00
Marko Strukelj c912f941e7 KEYCLOAK-2084 Client Registration CLI 2016-10-18 12:33:02 +02:00
Vlasta Ramik 041413d8de KEYCLOAK-3619 Update default datasource definition to non-XA 2016-10-18 12:12:41 +02:00
Marek Posolda 386bf8d39e Merge pull request #3344 from hmlnarik/KEYCLOAK-3732
KEYCLOAK-3732 Include 2.3.0 DB changelog for DB2
2016-10-18 10:29:01 +02:00
Hynek Mlnarik 2ea93b8a8b KEYCLOAK-3732 Include 2.3.0 DB changelog for DB2 2016-10-18 09:53:27 +02:00
Stian Thorgersen dfcd598912 Merge pull request #3341 from stianst/KEYCLOAK-3727
KEYCLOAK-3727 Fix link on logo in admin console
2016-10-18 09:49:55 +02:00
Stian Thorgersen e157a60a23 KEYCLOAK-2884 Remove ClientTemplateResource.getKeycloakApplication() 2016-10-18 09:01:24 +02:00
Marek Posolda 2fd680092a Merge pull request #3336 from mposolda/master
KEYCLOAK-3719 Add 'options' to ProviderConfigProperty and use it for …
2016-10-18 08:33:26 +02:00
Stian Thorgersen 37affb1e9c Merge pull request #3342 from hmlnarik/KEYCLOAK-3588
KEYCLOAK-3588 Update comment with related KC issue
2016-10-18 08:27:40 +02:00
Hynek Mlnarik 9df3091b22 KEYCLOAK-3588 Update comment with related KC issue 2016-10-18 08:17:18 +02:00
Stian Thorgersen 728e68ede5 KEYCLOAK-3727 Fix link on logo in admin console 2016-10-18 07:43:52 +02:00
Pavel Drozd 4cbc665592 Merge pull request #3340 from vramik/migration
KEYCLOAK-3589 Add support for manual upgrade of database schema to te…
2016-10-18 07:39:42 +02:00
Pavel Drozd d295ec709b Merge pull request #3293 from zschwarz/oidc-filter
KEYLOAK-3663 OIDC servlet filter
2016-10-18 07:35:17 +02:00
Pavel Drozd 90097e9aea Merge pull request #3318 from mhajas/KEYCLOAK-3654
KEYCLOAK-3654 Fix jwks-url in integration-arquillian
2016-10-18 07:32:50 +02:00
Stian Thorgersen 07dcfeb330 Merge pull request #3339 from stianst/KEYCLOAK-3266
KEYCLOAK-3266
2016-10-18 07:09:04 +02:00
Stian Thorgersen 3feec3ee68 Merge pull request #3338 from stianst/KEYCLOAK-3728
KEYCLOAK-3728
2016-10-18 07:08:25 +02:00
Stian Thorgersen f66eb8b1ef KEYCLOAK-3266
password policy NotUsername breaks new user registration
2016-10-17 21:38:14 +02:00
mposolda 00879b39b7 KEYCLOAK-3719 Add 'options' to ProviderConfigProperty and use it for 'List' type instead of defaultValue 2016-10-17 21:34:21 +02:00
Stian Thorgersen 77499be8d2 KEYCLOAK-3728
Disable script based authenticator in product profile
2016-10-17 21:16:51 +02:00
Stian Thorgersen 4ce5f9e087 Moved version property for jboss-integration-platform to Keycloak parent 2016-10-17 19:55:43 +02:00
Stian Thorgersen f62e66681e Merge branch 'KEYCLOAK-3628' of https://github.com/pedroigor/keycloak 2016-10-17 19:47:05 +02:00
Stian Thorgersen 06ad1537c8 Merge pull request #3323 from hmlnarik/KEYCLOAK-3639
KEYCLOAK-3639 Drop default value that prevents MSSQL update
2016-10-17 19:40:05 +02:00
Stian Thorgersen 64339aaca7 Merge pull request #3317 from stianst/KEY-ROTATION
Updated labels for java keystore provider config
2016-10-17 19:39:47 +02:00
Stian Thorgersen 9193142bb9 Merge pull request #3305 from sebastienblanc/KEYCLOAK-3683
KEYCLOAK-3683: Remove trustore and trustore-password check
2016-10-17 19:39:02 +02:00
Stian Thorgersen 2ed6067de0 Merge pull request #3290 from hmlnarik/KEYCLOAK-3655
KEYCLOAK-3655: Fix for unexpected server error when adding duplicate auth flow
2016-10-17 19:31:43 +02:00
Stan Silvert 98a9c50d53 Merge pull request #3256 from jsight/ng2_httpmodule_extension
Working now!  Thank you.
2016-10-17 13:27:42 -04:00
Stian Thorgersen 144898c0d2 Merge pull request #3262 from vramik/KEYCLOAK-3615
KEYCLOAK-3615 Resolve warnings while building the effective model
2016-10-17 19:09:30 +02:00
Stian Thorgersen 3b2f7630bb Merge pull request #3320 from hmlnarik/KEYCLOAK-3698
KEYCLOAK-3698: Add creation of DB changelog to SQL script
2016-10-17 18:55:45 +02:00
Stian Thorgersen 7c09b0c7b4 Merge pull request #3319 from hmlnarik/KEYCLOAK-3588
KEYCLOAK-3588: DB up-to-date check should not modify DB
2016-10-17 18:54:59 +02:00
Stian Thorgersen af508232dc Merge pull request #3328 from hmlnarik/KEYCLOAK-3574
KEYCLOAK-3574 Add missing check for changes in RealmPasswordPolicyCtrl
2016-10-17 18:51:34 +02:00
Stian Thorgersen d22f45f0d2 Merge pull request #3335 from stianst/KEYCLOAK-3635
KEYCLOAK-3635 Not possible to filter debug/trace logging
2016-10-17 18:50:10 +02:00
Stian Thorgersen cefb1742a1 Merge pull request #3331 from stianst/KEYCLOAK-3665
KEYCLOAK-3665 Remove theme module and make built-in theme resources r…
2016-10-17 18:48:09 +02:00
Stian Thorgersen b320eb8fc7 KEYCLOAK-3635 Not possible to filter debug/trace logging 2016-10-17 16:12:14 +02:00
Pedro Igor 5d836fefc5 [KEYCLOAK-3628] - Using JBPM/BRMS BOM to resolve dependencies versions 2016-10-17 12:05:44 -02:00
Marek Posolda dc13c701f5 Merge pull request #3329 from mposolda/master
KEYCLOAK-3626 - CreatedDate and lastUpdatedDate on user consent
2016-10-17 15:49:22 +02:00
Stian Thorgersen e61191edb5 KEYCLOAK-3570 Reduce the size of themes 2016-10-17 14:47:55 +02:00
Geir Ole Hiåsen Stevning 95f62c6aeb KEYCLOAK-3626 - CreatedDate and lastUpdatedDate on user consent 2016-10-17 13:53:12 +02:00
Stian Thorgersen 160e26b699 KEYCLOAK-3665 Remove theme module and make built-in theme resources read-only 2016-10-17 13:47:55 +02:00
Marek Posolda 4593d89a05 Merge pull request #3327 from mposolda/master
KEYCLOAK-3716 Unable to start Keycloak on wildfly
2016-10-17 13:33:50 +02:00
Stan Silvert 8ffb1ecc7d Merge pull request #3324 from ssilvert/remember-selected-flow
KEYCLOAK-2295: Flow selection forgotten when clicking to a sibling tab.
2016-10-17 07:30:51 -04:00
Stan Silvert a9ce6b9f81 Merge pull request #3321 from ssilvert/pagination
KEYCLOAK-3507: Pagination for clients and roles in admin console
2016-10-17 07:26:04 -04:00
Marek Posolda c62c60c723 Merge pull request #3326 from hmlnarik/KEYCLOAK-3664
KEYCLOAK-3664 Fix for NPE in subsystem when secure-deployment is undefined for a particular deployment
2016-10-17 13:23:02 +02:00
mhajas 5d57c29fae KEYCLOAK-3268 KEYCLOAK-3100 Validate SAML Idp and SP metadata 2016-10-17 13:22:00 +02:00
Hynek Mlnarik c2684a2b36 KEYCLOAK-3574 Add missing check for changes in RealmPasswordPolicyCtrl 2016-10-17 12:37:46 +02:00
mposolda 5732b2c58f KEYCLOAK-3716 Unable to start Keycloak on wildfly 2016-10-17 12:22:33 +02:00
Vlasta Ramik b0448d1b6f KEYCLOAK-3589 Add support for manual upgrade of database schema to testsuite 2016-10-17 11:32:43 +02:00
Hynek Mlnarik 4a19d4cdc1 KEYCLOAK-3664 Fix for NPE in subsystem when secure-deployment is undefined for a particular deployment 2016-10-17 09:19:44 +02:00
Marek Posolda acdc33b2fa Merge pull request #3322 from mposolda/cl-reg-policy-rebase
KEYCLOAK-3666 Dynamic client registration policies
2016-10-14 21:49:45 +02:00
Stan Silvert 8a7983bf5a KEYCLOAK-2295: Flow selection forgotten when clicking to a sibling tab. 2016-10-14 15:11:50 -04:00
mposolda 18e0c0277f KEYCLOAK-3666 Dynamic client registration policies 2016-10-14 20:20:40 +02:00
Hynek Mlnarik 8bdd8f4274 KEYCLOAK-3639 Drop default value that prevents MSSQL update 2016-10-14 17:51:35 +02:00
Bill Burke 1c0abbd722 Merge pull request #3315 from patriot1burke/master
import and sync spi
2016-10-14 10:12:42 -04:00
Stan Silvert 7a6324e02c KEYCLOAK-3507: Pagination for clients and roles in admin console 2016-10-14 08:35:46 -04:00
Hynek Mlnarik f256e2b102 KEYCLOAK-3588: DB up-to-date check should not modify DB
The DB up-to-date check uses Liquibase.listUnrunChangeSets() that in
its available variants unconditionally creates a DatabaseChangeLog
tables. Until the variant of listUnrunChangeSets() that suppresses this
behaviour is made public [1] (currently it is protected), workaround
has been implemented that invokes less invasive variant of
listUnrunChangeSets() via reflection.

[1] https://liquibase.jira.com/browse/CORE-2919
2016-10-14 14:29:01 +02:00
Hynek Mlnarik 3d47ab3665 KEYCLOAK-3698: Add creation of DB changelog to SQL script
Creation of database table DatabaseChangeLog was omitted from SQL
script which prevented creation of the database from scratch. The fix
adds DDL commands to create the table to the output SQL script in case
of empty database initialization.

Please note that DatabaseChangeLogLock is intentionally omitted. It is
created automatically before the update is even executed because a lock
is acquired (thus the table is properly created if it does not exist)
before check for up-to-dateness of database and potential migration in
KeycloakApplication constructor.
2016-10-14 14:27:07 +02:00
mhajas e08725e730 KEYCLOAK-3654 Fix jwks-url in integration-arquillian 2016-10-14 12:50:56 +02:00
Stian Thorgersen 422805b511 Updated labels for java keystore provider config 2016-10-14 10:36:17 +02:00
Stian Thorgersen 1f3d29964f Merge pull request #3314 from stianst/KEY-ROTATION
KEYCLOAK-905 More testing
2016-10-14 09:52:31 +02:00
Bill Burke 8c8a39c833 sync and import 2016-10-13 20:49:02 -04:00
Bill Burke 0938390654 sync and import 2016-10-13 20:38:49 -04:00
Jess Sightler 635e20a510 Fixed a concurrency bug that would cause periodic timeouts 2016-10-13 19:08:45 -04:00
Stian Thorgersen 4e245d428c KEYCLOAK-905 More testing 2016-10-13 20:44:33 +02:00
Stian Thorgersen cec13dae1f Merge pull request #3313 from guerinth/KEYCLOAK-3700
French translation for firstname label
2016-10-13 19:38:24 +02:00
Stian Thorgersen 2d0866118e Merge pull request #3303 from pedroigor/KEYCLOAK-3628
[KEYCLOAK-3628] - Spliting org.drools module
2016-10-13 19:36:04 +02:00
Stian Thorgersen 3bbbf30e64 Merge pull request #3312 from hmlnarik/KEYCLOAK-3697
KEYCLOAK-3697: Evaluate preconditions when generating SQL script
2016-10-13 19:27:44 +02:00
GUERIN Thierry e344dddf4b French translation for firstname label 2016-10-13 16:15:20 +02:00
Hynek Mlnarik 6578ce73a1 KEYCLOAK-3697: Evaluate preconditions when generating SQL script
Plus minor related change - replace deprecated call with equivalent
supported, add javadoc

Further info:
* http://forum.liquibase.org/topic/unexpected-behaviour-of-preconditions-with-updatesql
* http://stackoverflow.com/questions/17671923/liquibase-migrate-sql-does-not-check-precondtions
2016-10-13 13:00:33 +02:00
Stian Thorgersen a006e1fad1 Merge pull request #3311 from stianst/KEY-ROTATION
EYCLOAK-905
2016-10-13 12:38:55 +02:00
Stian Thorgersen d2cae0f8c3 KEYCLOAK-905
Realm key rotation for OIDC
2016-10-13 11:19:52 +02:00
Pavel Drozd 1e51952006 Merge pull request #3307 from mhajas/KEYCLOAK-3690
KEYCLOAK-3690 Fix highest directory on windows
2016-10-13 08:27:01 +02:00
Pavel Drozd f868aa7fbe Merge pull request #3308 from mhajas/KEYCLOAK-3694
KEYCLOAK-3694 Fix timeSkewTest on windows
2016-10-13 08:26:35 +02:00
mhajas fb99f673fc KEYCLOAK-3690 Fix highest directory on windows 2016-10-12 15:15:21 +02:00
mhajas 9dbd1149cf KEYCLOAK-3694 Fix timeSkewTest on windows 2016-10-12 15:14:24 +02:00
Pavel Drozd 455db1add4 Merge pull request #3309 from vramik/migration
KEYCLOAK-3489 KEYCLOAK-3609
2016-10-12 14:35:24 +02:00
Ramunas Kraujutis b6e0cb374d Lithuanian locale update for 2.3 version 2016-10-12 14:01:30 +03:00
Vlasta Ramik bc2eb2b9ea KEYCLOAK-3489 KEYCLOAK-3609 2016-10-12 12:28:56 +02:00
Bill Burke fbaa731dfa import spi 2016-10-11 18:33:59 -04:00
Hynek Mlnarik 03cf9bad2e KEYCLOAK-2964 - Fix groups not applied for authentication of admin operations 2016-10-11 15:21:38 +02:00
sebastienblanc f5a5fc3458 KEYCLOAK-3683: Remove trustore and trustore-password check 2016-10-11 15:19:31 +02:00
Mohit Suman 0e33e4035f Pagination Directive for clients and roles in admin console 2016-10-10 14:57:39 -04:00
Mohit Suman c4f0053dd9 add pagination custom css 2016-10-10 14:57:26 -04:00
Pedro Igor 2b589186ed [KEYCLOAK-3628] - Spliting org.drools module 2016-10-10 13:21:51 +02:00
zschwarz 4bd38bb9c1 KEYLOAK-3663 OIDC servlet filter 2016-10-10 10:44:07 +02:00
Cherian Mathew ac245d3c4b Fix entitlement function call in authorization 2016-10-09 11:19:02 +02:00
Stan Silvert a1fd85c52a Merge pull request #3300 from ssilvert/flow-to-browser
KEYCLOAK-3679: Add new flow, default (browser) flow always shown.
2016-10-07 18:13:06 -04:00
Stan Silvert 06dcf99b42 KEYCLOAK-3679: Add new flow, default (browser) flow always shown. 2016-10-07 14:32:23 -04:00
Stan Silvert 6acd9cdf1d Merge pull request #3298 from ssilvert/blanks-in-dropdown
KEYCLOAK-3673: Blank items in IDP's Post Login Flow selector
2016-10-07 08:23:06 -04:00
Stan Silvert 68ca1849bf KEYCLOAK-3673: Blank items in IDP's Post Login Flow selector 2016-10-06 17:43:13 -04:00
Bill Burke 7413f46e1b Merge pull request #3297 from patriot1burke/master
KEYCLOAK-3671
2016-10-06 16:26:44 -04:00
Bill Burke db05dc6ee4 KEYCLOAK-3671 2016-10-06 15:02:15 -04:00
Bill Burke fbb65fa072 KEYCLOAK-3671 2016-10-06 14:56:02 -04:00
Bill Burke 0b5bcad5f6 Merge pull request #3295 from patriot1burke/master
initial sync/import spi
2016-10-06 14:51:20 -04:00
Bill Burke 74325fe133 initial sync/import spi 2016-10-06 14:48:53 -04:00
Bill Burke 42e93742fa Merge pull request #3289 from patriot1burke/master
refactor CredentialValidationOutput apis
2016-10-05 09:40:18 -04:00
Hynek Mlnarik cfbc9cf14b KEYCLOAK-3655: Fix for unexpected server error when adding duplicate auth flow 2016-10-05 13:57:02 +02:00
Bill Burke 67d3730c6d Merge remote-tracking branch 'upstream/master' 2016-10-04 20:13:16 -04:00
Stan Silvert 36aa3da3d0 Merge pull request #3288 from ssilvert/sort-role-mappings
KEYCLOAK-3649: Sort role lists in Role Mappings screen.
2016-10-04 20:04:13 -04:00
Bill Burke c5600e888d revactor CredentialValidationOutput apis 2016-10-04 17:26:45 -04:00
Stan Silvert 38d1dea65e Merge pull request #3287 from ssilvert/empty-state-user-fed
KEYCLOAK-3650: Empty state for User Federation
2016-10-04 17:19:57 -04:00
Stan Silvert d653437830 KEYCLOAK-3649: Sort role lists in Role Mappings screen. 2016-10-04 17:17:03 -04:00
Stan Silvert b5a1b0bc50 KEYCLOAK-3650: Empty state for User Federation 2016-10-04 15:10:13 -04:00
Bill Burke a89dbabc92 Merge pull request #3286 from patriot1burke/master
remove UserCredValueModel and hold hash providers
2016-10-04 14:07:26 -04:00
Bill Burke 4af0976194 remove UserCredValueModel and hold hash providers 2016-10-04 12:34:15 -04:00
Marek Posolda 46038b457c Merge pull request #3285 from mposolda/pk-rotation
KEYCLOAK-3643 minor README update
2016-10-04 16:42:02 +02:00
mposolda 7af125247c KEYCLOAK-3643 minor README update 2016-10-04 16:41:15 +02:00
Marek Posolda 442e337668 Merge pull request #3284 from mposolda/pk-rotation
KEYCLOAK-3643 Update fuse-admin README about hawtio integration
2016-10-04 15:53:59 +02:00
mposolda e31c2b92a9 KEYCLOAK-3643 Update fuse-admin README about hawtio integration 2016-10-04 15:53:26 +02:00
Marek Posolda d27a23cbe3 Merge pull request #3283 from mposolda/pk-rotation
KEYCLOAK-3564 Update demo examples with public key rotation
2016-10-04 15:25:17 +02:00
Marek Posolda b1e5bc8a30 Merge pull request #3278 from paoloantinori/unify_fuse_sample_config
KEYCLOAK-3643 - Fuse examples - refactoring
2016-10-04 15:25:02 +02:00
mposolda bc916a1909 KEYCLOAK-3564 Update demo examples with public key rotation 2016-10-04 14:05:01 +02:00
Marek Posolda f8c236afa8 Merge pull request #3282 from mposolda/pk-rotation
KEYCLOAK-3646 Missing attributes in AS7 adapter subsystem
2016-10-04 11:08:09 +02:00
Marek Posolda c32cf51808 Merge pull request #3254 from didiez/master
KEYCLOAK-3608 Update existing user single attribute removes all other attributes from user
2016-10-04 08:43:22 +02:00
mposolda a60dd48300 KEYCLOAK-3646 Missing attributes in AS7 adapter subsystem 2016-10-04 08:30:35 +02:00
Stan Silvert 90b5ad5bb3 Merge pull request #3281 from ssilvert/delte-multiple-users-updated
KEYCLOAK-3633: Unable to delete multiple users without re-entering search
2016-10-03 18:54:26 -04:00
Jess Sightler cab9740221 Fixed token handling for cases where options is null 2016-10-03 18:08:36 -04:00
Jess Sightler 5b1b63e364 Removed irrelevant comment 2016-10-03 17:57:08 -04:00
Jess Sightler e2094065b2 Switched to observable import that contains other operators 2016-10-03 17:54:52 -04:00
Jess Sightler abb0bbd815 Angular 2: Added an extension to the Http class to automatically retrieve Keycloak tokens 2016-10-03 17:54:52 -04:00
Stan Silvert 9b10110dcb KEYCLOAK-3633: Don't search on initial page load. 2016-10-03 15:02:11 -04:00
Stan Silvert ab8803a5d6 KEYCLOAK-3633: Unable to delete multiple users without re-entering search. 2016-10-03 14:42:53 -04:00
Marek Posolda c15a425317 Merge pull request #3280 from mposolda/pk-rotation
Renamed KeyStorageProvider to PublicKeyStorageProvider. Subsystem support.
2016-10-03 19:37:18 +02:00
mposolda 81e773688f KEYCLOAK-3644 demo-dist broken due to broken datasource element in standalone.xml 2016-10-03 17:42:20 +02:00
mposolda d71fadabeb KEYCLOAK-3634 Allow adapter subsystem to just inject dependencies 2016-10-03 17:38:41 +02:00
mposolda 7447ca7b58 KEYCLOAK-3564 Added token-minimum-time-to-live and min-time-between-jwks-requests to adapter subsystem 2016-10-03 16:06:45 +02:00
mposolda 0f9798a10d KEYCLOAK-3493 KEYCLOAK-3532 Renamed KeyStorageProvider to PublicKeyStorageProvider 2016-10-03 15:23:50 +02:00
Marek Posolda d12f157299 Merge pull request #3279 from thomasdarimont/issue/KEYCLOAK-3642-remove-dependency-on-commons-io
KEYCLOAK-3642 Favor StreamUtil over IOUTils in ScriptBasedAuthenticatorFactory
2016-10-03 15:19:37 +02:00
Stian Thorgersen f1156a49cf Merge pull request #3273 from vramik/KEYCLOAK-3619
KEYCLOAK-3619 Update default datasource definition to XA
2016-10-03 13:54:20 +02:00
Thomas Darimont c852d6d817 KEYCLOAK-3642 Favor StreamUtil over IOUTils in ScriptBasedAuthenticatorFactory
The dependency on commons-io through the use of IOUtils in
ScriptBasedAuthenticatorFactory resulted in
NoClassDefFoundError org/apache/commons/io/IOUtils when building the
keycloak-distribution.

We now use the StreamUtil from keycloak-common to avoid this dependency.
2016-10-03 13:33:53 +02:00
Stian Thorgersen 7d038e72c9 Merge pull request #3272 from abstractj/KEYCLOAK-3638
KEYCLOAK-3638: UnixUserTest will fails on Windows
2016-10-03 13:19:11 +02:00
Paolo Antinori 654601c92c KEYCLOAK-3643 - Fuse examples - refactoring 2016-10-03 12:48:49 +02:00
Bill Burke a743600b34 Merge pull request #3275 from patriot1burke/master
mongo impl for user fed storage
2016-10-01 13:30:31 -04:00
Bill Burke d4c3fae546 merge conflicts 2016-09-30 19:19:12 -04:00
Bill Burke 6a4e413bf4 final mongo fixes 2016-09-30 19:08:34 -04:00
Marek Posolda b0da7dc72f Merge pull request #3274 from mposolda/pk-rotation
KEYCLOAK-3493 KEYCLOAK-3532 Added KeyStorageProvider. Support key rot…
2016-09-30 22:54:26 +02:00
Bill Burke 110f6ad549 mongo fed 2016-09-30 16:48:59 -04:00
mposolda f9a0abcfc4 KEYCLOAK-3493 KEYCLOAK-3532 Added KeyStorageProvider. Support key rotation for OIDC clients and identity providers with JWKS url. 2016-09-30 21:28:23 +02:00
Pavel Drozd 6e00587468 Merge pull request #3264 from vmuzikar/KEYCLOAK-3616
KEYCLOAK-3616 Add integration tests for Node.js adapter
2016-09-30 14:33:07 +02:00
Bruno Oliveira 5093dd94e2 KEYCLOAK-3638: UnixUserTest will fails on Windows 2016-09-30 08:19:56 -03:00
Vlasta Ramik 550ec2ff51 Update default datasource definition to XA 2016-09-30 12:50:17 +02:00
Stian Thorgersen ab0c075242 Merge pull request #3270 from abstractj/gitignore
Ignore dependency-reduced-pom.xml created by Maven Shade plugin
2016-09-30 08:56:27 +02:00
Pavel Drozd bcf5ac56cd Merge pull request #3266 from mhajas/KEYCLOAK-3586
KEYCLOAK-3586 Adding tests for updateToken and timeSkew
2016-09-29 11:13:26 +02:00
Pavel Drozd aa1ad029bb Merge pull request #3252 from mhajas/KEYCLOAK-3604
KEYCLOAK-3604 Compile servlets and filters under JDK7
2016-09-29 11:06:21 +02:00
Bruno Oliveira e27cbac0b5 Ignore dependency-reduced-pom.xml created by Maven Shade plugin 2016-09-29 05:27:43 -03:00
Stian Thorgersen 5d34b7e682 Merge pull request #3189 from thomasdarimont/issue/KEYCLOAK-3491-revise-scripting-support
KEYCLOAK-3491 Revise Scripting Support
2016-09-29 10:12:15 +02:00
mhajas 69f66edb5f KEYCLOAK-3604 Compile servlets and filters under JDK7 2016-09-29 09:51:12 +02:00
Stian Thorgersen eed71a4b84 Merge pull request #3269 from abstractj/test-provider-factories
Inclusion of test to check the federation provider list when SSSD is enabled
2016-09-29 08:15:29 +02:00
Bill Burke 8967ca4066 refactor mongo entities, optimize imports 2016-09-28 15:25:39 -04:00
Bruno Oliveira a5b5e78eba Inclusion of test to check the federation provider list when SSSD is enabled 2016-09-28 14:16:41 -03:00
Stian Thorgersen a58c985934 Merge pull request #3268 from stianst/REVIEW
KEYCLOAK-2438
2016-09-28 13:27:26 +02:00
Stian Thorgersen 34f62eb31d Fixes to [KEYCLOAK-2438] PR 2016-09-28 10:25:37 +02:00
Bill Burke afee7d7403 Merge pull request #3267 from patriot1burke/master
mongo fixes
2016-09-27 21:17:24 -04:00
Bill Burke d0eb26b8bb Merge remote-tracking branch 'upstream/master' 2016-09-27 17:08:24 -04:00
Bill Burke d65cc830eb mongo fixes 2016-09-27 17:07:16 -04:00
mhajas 6c3479665c KEYCLOAK-3586 2016-09-27 14:00:52 +02:00
Vaclav Muzikar ee2daeb364 KEYCLOAK-3616 Add integration tests for Node.js adapter 2016-09-27 10:32:35 +02:00
Pavel Drozd fc6d6ff7f7 Merge pull request #3261 from vramik/KEYCLOAK-3609
KEYCLOAK-3609 Export/Import migration testing
2016-09-27 07:39:00 +02:00
Bruno Oliveira 98d2fe15e8 [KEYCLOAK-2438] - Add display name to social login buttons
[KEYCLOAK-3291] - Names of social identity providers are wrongly capitalized (eg GitHub vs Github)
2016-09-26 13:36:28 -03:00
Bill Burke af49d184a2 Merge pull request #3263 from patriot1burke/master
bump pom version
2016-09-26 11:01:45 -04:00
Bill Burke ecc104719d bump pom version 2016-09-26 11:01:18 -04:00
Stian Thorgersen e8fe9bce11 Merge pull request #3260 from stianst/KEYCLOAK-2756
KEYCLOAK-2756
2016-09-26 13:22:12 +02:00
Stian Thorgersen 3b455d1735 Merge pull request #3259 from stianst/KEYCLOAK-3612
KEYCLOAK-3612
2016-09-26 13:20:57 +02:00
Vlasta Ramik 103fa975a1 Resolve warnings while building the effective model 2016-09-26 12:34:46 +02:00
Pavel Drozd 9ee58909ab Merge pull request #3248 from pdrozd/patches
KEYCLOAK-3597 - Arquillian testuite - server preparation (overlay & p…
2016-09-26 10:26:13 +02:00
Pavel Drozd 6f5dadedd5 Merge pull request #3247 from vramik/KEYCLOAK-3596
KEYCLOAK-3596 Remove duplicate declaration of maven-resources-plugin
2016-09-26 10:25:07 +02:00
Stian Thorgersen 033d1f564a KEYCLOAK-2756
Renaming a realm breaks down the Clients
2016-09-26 10:11:28 +02:00
Stian Thorgersen bb7080584d KEYCLOAK-3612
Mark keycloak-authz-policy-common and keycloak-authz-policy-drools modules as private
2016-09-26 09:07:54 +02:00
Bill Burke 370a6c1631 Merge pull request #3258 from patriot1burke/master
Credentials Refactoring
2016-09-24 10:22:05 -04:00
Bill Burke 27e86e36c4 Merge remote-tracking branch 'upstream/master' 2016-09-23 16:50:16 -04:00
Bill Burke ff1326fe35 authenticator example updated 2016-09-23 16:50:08 -04:00
Marek Posolda 5fc7149aac Merge pull request #3257 from mposolda/pairwise
KEYCLOAK-3422 Pairwise subjects : few fixes and bit of refactoring
2016-09-23 20:58:51 +02:00
Bill Burke a1bcd0651d fixes 2016-09-23 10:38:49 -04:00
Marek Posolda 22aaa4cb52 Merge pull request #3237 from brat000012001/kc-iss-3505
KEYCLOAK-3505: updated the oidc user attribute mapper used to map oid…
2016-09-23 15:38:20 +02:00
mposolda 04f05c0cd1 KEYCLOAK-3422 Pairwise subjects : few fixes and bit of refactoring 2016-09-23 15:29:13 +02:00
Bill Burke 8e65356891 creds 2016-09-22 19:57:39 -04:00
Vlasta Ramik f91c517a9c Export/Import migration testing 2016-09-22 15:16:20 +02:00
Bill Burke 7209a95dce credential refactoring 2016-09-22 08:34:45 -04:00
didiez 98bf095471 Keep setSingleAttribute from deleting all other attributes of the user being updated. 2016-09-22 10:42:24 +02:00
Diego Díez Ricondo 33963f8aa7 Merge pull request #1 from keycloak/master
Bringing fork up to date
2016-09-22 09:17:14 +02:00
Stian Thorgersen a9a759c4dc Merge pull request #3251 from stianst/master
KEYCLOAK-3586
2016-09-21 10:55:46 +02:00
Stian Thorgersen 06c48a2830 KEYCLOAK-3586
Token is not refreshed in updateToken
2016-09-21 09:13:05 +02:00
gautric affc62460c KEYCLOAK-3602 - NPE into SAML DeploymentBuilder build 2016-09-20 18:39:49 +02:00
gautric cd3cd4f506 KEYCLOAK-3602 - NPE into SAML DeploymentBuilder build 2016-09-20 18:36:54 +02:00
Thomas Darimont 8e113384aa KEYCLOAK-3491 Revise Scripting Support
Refactored the scripting infrastructure and added documentation.
Added tests and an authenticator template in JavaScript for a quickstart.
Increased height of ace code editor to 600px to avoid scrolling.
2016-09-20 14:33:39 +02:00
Pavel Drozd 59eec8d5b4 KEYCLOAK-3597 - Arquillian testuite - server preparation (overlay & patches installation) 2016-09-20 13:00:54 +02:00
Vlasta Ramik 0ab53c5d88 Remove duplicate declaration of maven-resources-plugin 2016-09-20 12:51:27 +02:00
Stian Thorgersen 4977527f60 Merge pull request #3239 from stianst/SERVER-PROFILE
KEYCLOAK-3579 Add ability to define profiles
2016-09-20 10:39:05 +02:00
Stian Thorgersen 0addfeaa75 Merge pull request #3238 from mwcz/always-resolve-init-promise
always resolve keycloak.init's promise
2016-09-20 09:29:04 +02:00
Stian Thorgersen c6a6848483 Merge pull request #3245 from mhajas/KEYCLOAK-3590
KEYCLOAK-3590 Fix includes
2016-09-20 08:52:37 +02:00
Stian Thorgersen 9d0c9046ad Merge pull request #3227 from mhajas/KEYCLOAK-3553
KEYCLOAK-3553 Move all functionality tests to servlets
2016-09-20 08:51:59 +02:00
Stian Thorgersen 992268a8e6 KEYCLOAK-3579 Add ability to define profiles 2016-09-20 08:41:23 +02:00
Stan Silvert 5514a0c968 Merge pull request #3235 from eppsilon/update-angular2-example
Update Angular 2 example to Angular 2 final
2016-09-19 21:08:04 -04:00
Pedro Igor df1995636a Merge pull request #3244 from mhajas/KEYCLOAK-3561
KEYCLOAK-3561 Hardcoded artifact version
2016-09-19 12:29:57 -03:00
mhajas ba0d71704d KEYCLOAK-3590 Fix includes 2016-09-19 15:19:41 +02:00
mhajas f69eb5503b KEYCLOAK-3561 Hardcoded artifact version 2016-09-19 14:26:47 +02:00
Stian Thorgersen 9bc80cc323 Merge pull request #3240 from abstractj/KEYCLOAK-3536
[KEYCLOAK-3536] - Add integration tests for SSSD federation provider
2016-09-19 13:07:27 +02:00
Stian Thorgersen 39fa49f765 Merge pull request #3242 from stianst/master
KEYCLOAK-3578 Remove source distribution
2016-09-19 12:57:28 +02:00
Stian Thorgersen 80cc9b0585 KEYCLOAK-3578 Remove source distribution 2016-09-19 10:32:40 +02:00
Brett Epps 9f4cf07489 Add Angular2 product app to be deployed with other demo apps 2016-09-18 14:10:58 -05:00
Brett Epps 47b742a16e Update Angular 2 example to Angular 2.0.0 final release 2016-09-18 14:04:36 -05:00
Bruno Oliveira c26471faa8 Tests cases for: user disabled, password and profile changes 2016-09-16 18:25:47 -03:00
Bruno Oliveira 4b1b3a0dda Add Maven Shade for JNA 2016-09-16 18:19:17 -03:00
wyvie 6bdc9dc133 [KEYCLOAK-3036] Added sssd integration test 2016-09-16 18:19:17 -03:00
mhajas 12919223cf KEYCLOAK-3553 All functionality tests to servlets 2016-09-16 09:59:05 +02:00
Stian Thorgersen b32b222b02 Merge pull request #3224 from mhajas/KEYCLOAK-3551
KEYCLOAK-3551 Remove example-dist dependency from testsuite
2016-09-16 09:46:42 +02:00
Stian Thorgersen 44c47431a1 Merge pull request #3233 from betovieirasilva/master-KEYCLOAK-LoginUsername
[PULL-REQUEST-3181 & PULL-REQUEST-3233] Username is not displayed on the login screen with that email
2016-09-16 09:23:26 +02:00
Stian Thorgersen b2fd429749 Merge pull request #3234 from vramik/KEYCLOAK-3549
KEYCLOAK-3549 fix xsl locator to work with ibmjdk
2016-09-16 09:22:23 +02:00
mwcz bd2f220736 always resolve keycloak.init's promise 2016-09-15 17:25:29 -04:00
Peter Nalyvayko 0348e427de KEYCLOAK-3505: cosmetic coding style changes 2016-09-15 15:42:09 -04:00
Peter Nalyvayko b97908fb02 KEYCLOAK-3505: updated the oidc user attribute mapper used to map oidc broker claims to map the claims from userinfo claim set 2016-09-15 11:11:58 -04:00
Stian Thorgersen 1aeec2a83c Merge pull request #3236 from gicappa/patch-1
The documentation link was referring the old documentation
2016-09-15 09:52:01 +02:00
Gian Carlo Pace 05792516f6 The documentation link was referring the old documentation 2016-09-15 09:47:49 +02:00
Marek Posolda 5afe93552a Merge pull request #3231 from TeliaSoneraNorge/pr/KEYCLOAK-3422
KEYCLOAK-3422 support pairwise subject identifier in oidc
2016-09-14 21:51:48 +02:00
Marek Posolda 036b24378f Merge pull request #3225 from vmuzikar/KEYCLOAK-3552
KEYCLOAK-3552 Add some missing tests for OIDC Dynamic Profile
2016-09-14 18:30:44 +02:00
Vlasta Ramik bde45eaa07 fix xsl locator to work with ibmjdk 2016-09-14 14:43:14 +02:00
Pedro Igor f9b1cd191d Merge pull request #3232 from pedroigor/master
[KEYCLOAK-3534] - Fixing the logic to display the authz tab.
2016-09-13 19:25:08 -03:00
Gilberto Vieira da Silva 8c518a8d38 Include test case for PULL-REQ-3181 2016-09-13 18:57:07 -03:00
Gilberto Vieira da Silva 6d5dc673d4 When keycloak is set to login email and Username is different from email, to check the "Remember Me" username is not displayed on the login screen with that email because the KEYCLOAK_REMEMBER_ME cookie is always recorded the username field.
Conflicts:
	services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java

[PULL-REQUEST-3181]
2016-09-13 18:56:25 -03:00
Gilberto Vieira da Silva 55e07bcde2 Reverted to appli to branch master-KEYCLOAK-LoginUsername 2016-09-13 18:52:16 -03:00
Gilberto Vieira da Silva 868f8b166f Reverted to appli to branch master-KEYCLOAK-LoginUsername 2016-09-13 18:52:05 -03:00
Gilberto Vieira da Silva 4b3d3bf55b Include test case for PULL-REQ-3181 2016-09-13 18:21:48 -03:00
Gilberto Vieira da Silva cb1b34eee5 When keycloak is set to login email and Username is different from email, to check the "Remember Me" username is not displayed on the login screen with that email because the KEYCLOAK_REMEMBER_ME cookie is always recorded the username field.
Conflicts:
	services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
2016-09-13 18:21:04 -03:00
Pedro Igor eb80d59cd8 [KEYCLOAK-3534] - Fixing the logic to display the authz tab. 2016-09-13 16:16:01 -03:00
Martin Hardselius 04d03452bd KEYCLOAK-3422 support pairwise subject identifier in oidc 2016-09-13 09:18:45 +02:00
Marek Posolda a88e975a3a Merge pull request #3228 from mposolda/master
KEYCLOAK-905 Realm keys rotation support on adapters
2016-09-13 04:43:17 +02:00
mposolda bf6246f5c1 KEYCLOAK-905 Realm keys rotation support on adapters 2016-09-12 21:24:04 +02:00
Pedro Igor d31d2859ae Merge pull request #3226 from pedroigor/master
[KEYCLOAK-3446] - Some minor changes
2016-09-12 09:01:31 -03:00
Pedro Igor 44f57b8273 [KEYCLOAK-3446] - Some minor changes 2016-09-09 17:48:32 -03:00
filipelautert 5eb36f4e0f [KEYCLOAK-3446] Add pt_BR localization for admin screens (#3173)
* Add client.name as a second parameter to the title expressions in login template

* Fixing tooltip.

* pt_BR localization for admin screens.

* Reverting login.ftl

* Added all tooltip messages - even the ones not translated.
Translated around 150 messages todas.

* More translations.

* Fixing wrong edit.
2016-09-09 16:34:59 -03:00
Stian Thorgersen 05ae84d533 Added version for keycloak-fuse-adapter-dist 2016-09-09 17:08:38 +02:00
Stian Thorgersen 59674e44bf Update HackingOnKeycloak.md 2016-09-09 15:11:35 +02:00
Marek Posolda efaa88b4e3 Merge pull request #3222 from mposolda/master
KEYCLOAK-3547 Incorrect jpa-changelog-2.2.0.xml
2016-09-09 13:20:04 +02:00
Marek Posolda f55a526ebb Merge pull request #3223 from stianst/master
KEYCLOAK-3535 Tweak logging for SSSD
2016-09-09 13:19:51 +02:00
Vaclav Muzikar fa02277e6e KEYCLOAK-3552 Add some missing tests for OIDC Dynamic Profile 2016-09-09 12:23:08 +02:00
mhajas 4780a3453a Remove example-dist dependency 2016-09-09 12:04:24 +02:00
Stian Thorgersen ccb9433e5c KEYCLOAK-3535 Tweak logging for SSSD 2016-09-09 11:32:06 +02:00
mposolda 9d79a847c8 KEYCLOAK-3547 Incorrect jpa-changelog-2.2.0.xml 2016-09-09 09:47:32 +02:00
Stian Thorgersen 1630b9a20c Merge pull request #3220 from abstractj/KEYCLOAK-3535
KEYCLOAK-3535 - Check if SSSD is available via DBUS
2016-09-09 08:15:11 +02:00
Stian Thorgersen 65befb16fd Merge pull request #3219 from pedroigor/KEYCLOAK-3534
[KEYCLOAK-3534] - Authorization tab appears too soon in admin console
2016-09-09 08:14:03 +02:00
Stian Thorgersen e8f99a2109 Merge pull request #3221 from patriot1burke/master
KEYCLOAK-3423
2016-09-09 07:45:53 +02:00
Pedro Igor 7af16fc747 [KEYCLOAK-3534] - Authorization tab appears too soon in admin console 2016-09-09 01:03:09 -03:00
Bill Burke 84f5c0926b KEYCLOAK-3423 2016-09-08 16:47:06 -04:00
Bruno Oliveira 11245701d2 Check if SSSD is available via DBUS 2016-09-08 16:01:45 -03:00
Bill Burke 5c45c5e6e4 Merge pull request #3218 from patriot1burke/master
jta=false for demo-dist
2016-09-08 09:42:49 -04:00
Bill Burke 04ee5ca7c1 jta=false for demo-dist 2016-09-08 09:42:05 -04:00
Stian Thorgersen df5d37a8d9 Merge pull request #3215 from stianst/KEYCLOAK-3538
KEYCLOAK-3538 Update examples to refer to standalone.xml for config
2016-09-08 15:27:57 +02:00
Stian Thorgersen 55a86dc0f4 Merge pull request #3217 from vramik/KEYCLOAK-3545
KEYCLOAK-3545 remove jta=false from default datasource definition
2016-09-08 15:26:49 +02:00
Vlasta Ramik fa8f60a5f0 remove jta=false from default datasource definition 2016-09-08 15:25:17 +02:00
Bill Burke 2a5c778af5 Merge pull request #3209 from patriot1burke/master
KEYCLOAK-3440
2016-09-08 09:10:54 -04:00
Stian Thorgersen f24d73e8d6 KEYCLOAK-3538 Update examples to refer to standalone.xml for config 2016-09-08 14:04:12 +02:00
Stian Thorgersen 6d40e0dd07 Merge pull request #3212 from didiez/master
KEYCLOAK-3513 Prevent clearing all registered sessions when invalidating some by sessionId
2016-09-08 13:50:14 +02:00
Marek Posolda 529ef3a425 Merge pull request #3213 from mposolda/master
KEYCLOAK-3542 Not possible to enable bruteForceProtection for realm
2016-09-08 13:41:18 +02:00
Stian Thorgersen 36bb94afb8 Environment dependent provider 2016-09-08 07:40:19 -03:00
mposolda 4fd0238ca9 KEYCLOAK-3542 Not possible to enable bruteForceProtection for realm 2016-09-08 12:30:38 +02:00
Marek Posolda 76e1160b36 Merge pull request #3210 from mposolda/master
KEYCLOAK-3537 Username not shown when validation error on Account pro…
2016-09-08 10:04:38 +02:00
didiez df3079852e Prevent clearing all registered sessions when invalidating some by sessionId 2016-09-08 09:19:30 +02:00
Stian Thorgersen 71b648a9b6 Merge pull request #3183 from mohitsuman/KEYCLOAK-3502
Keycloak 3502 - Implement "Empty State" for Identity Providers in Admin Console
2016-09-08 08:53:06 +02:00
Stian Thorgersen ab7bb21991 Merge pull request #3160 from ramunask/feature-lithuanian-locale
KEYCLOAK-3452 add Lithuanian localization
2016-09-08 08:44:45 +02:00
Stian Thorgersen 348e0b6226 Merge pull request #3200 from mbaluch/master
RHSSO-423 - Added default value for 'log-dir'. Set to ${project.build…
2016-09-08 08:42:54 +02:00
Stian Thorgersen 44b7210af7 Merge pull request #3203 from mhajas/eap6fix
KEYCLOAK-3533 Fix forbidden page on eap6
2016-09-08 08:41:52 +02:00
Stian Thorgersen f726caea9b Merge pull request #3205 from stianst/KEYCLOAK-3342
KEYCLOAK-3342 Add Identity Provider authenticator
2016-09-08 08:40:32 +02:00
mposolda 16282aeb7b KEYCLOAK-3537 Username not shown when validation error on Account profile page 2016-09-08 08:36:39 +02:00
Stian Thorgersen d2c546bdc2 Merge pull request #3201 from pedroigor/KEYCLOAK-3129
[KEYCLOAK-3129] - Add authorization services endpoints to PermissionsTest
2016-09-08 08:03:40 +02:00
Stian Thorgersen 1f27fc9e4b Merge pull request #3153 from cargosoft/KEYCLOAK-3327
KEYCLOAK-3327 Make realm attributes accessible via the RealmModel
2016-09-08 08:00:14 +02:00
Stian Thorgersen 7c292b1213 KEYCLOAK-3342 Add Identity Provider authenticator 2016-09-08 07:20:35 +02:00
Bill Burke 3b9a6b32e1 Revert "Revert "KEYCLOAK-3440""
This reverts commit 01e48dc4b8.
2016-09-07 23:41:32 -04:00
Bill Burke b0bb0d36ab Merge remote-tracking branch 'upstream/master' 2016-09-07 23:19:45 -04:00
Bill Burke cdda19d1f8 pom.xml 2016-09-07 23:19:16 -04:00
Bill Burke 759747ab5c Merge pull request #3208 from keycloak/revert-3207-master
Revert "KEYCLOAK-3440"
2016-09-07 23:17:52 -04:00
Bill Burke 01e48dc4b8 Revert "KEYCLOAK-3440" 2016-09-07 23:17:35 -04:00
Bill Burke 61b93c318f Merge pull request #3207 from patriot1burke/master
KEYCLOAK-3440
2016-09-07 23:15:44 -04:00
Bill Burke 3f35234cf5 Merge remote-tracking branch 'upstream/master' 2016-09-07 23:11:38 -04:00
Bill Burke da135389c7 KEYCLOAK-3440 2016-09-07 23:11:28 -04:00
Marek Posolda b3d7d48ec8 Merge pull request #3206 from mposolda/master
KEYCLOAK-3494 Input elements backed by user attributes fail to update…
2016-09-07 22:02:38 +02:00
mposolda 5a015a6518 KEYCLOAK-3494 Input elements backed by user attributes fail to update in themes 2016-09-07 20:08:09 +02:00
Stian Thorgersen 7912bd4dae Merge pull request #3195 from abstractj/KEYCLOAK-3036
Initial FreeIPA Integration
2016-09-07 12:45:35 +02:00
mhajas c860d03a60 Fix forbidden page on eap6 2016-09-07 09:02:46 +02:00
Bruno Oliveira 1b2a5eda32 Initial FreeIPA Integration
- Provide username/password authentication with PAM
  - Obtain user data from SSSD
  - Feature packs for dbus-java, libpam4j and SSSD API
  - Provisioning script
2016-09-06 18:04:43 -03:00
Pedro Igor 517413d38e [KEYCLOAK-3129] - Add authorization services endpoints to PermissionsTest 2016-09-06 17:32:37 -03:00
Marek Baluch fd25dbcb5c RHSSO-423 - Added default value for 'log-dir'. Set to ${project.build.dir}/surefire-reports 2016-09-06 18:16:15 +02:00
Mohit Suman bdbc4e1f6d add margin and update the description text 2016-09-06 19:34:07 +05:30
Stian Thorgersen eebd496c2f Merge pull request #3199 from stianst/KEYCLOAK-3475
KEYCLOAK-3475 Fixes for on token expired event
2016-09-06 15:36:46 +02:00
Bill Burke 15d31a202f Merge remote-tracking branch 'upstream/master' 2016-09-06 08:56:17 -04:00
Bill Burke 6714c1a136 cred refactor 2016-09-06 08:55:47 -04:00
Ramūnas Kraujutis ca6d1f3c48 LT locale improvements 2016-09-06 14:58:09 +03:00
Ramūnas Kraujutis c5a149a892 Merge remote-tracking branch 'upstream/master' into feature-lithuanian-locale 2016-09-06 14:50:07 +03:00
Stian Thorgersen b33648cc29 Merge pull request #3191 from greg0ire/patch-1
Remove duplicate untranslated word
2016-09-06 13:42:32 +02:00
Stian Thorgersen 4a583712b8 Merge pull request #3182 from mohitsuman/KEYCLOAK-2706
Fixed dropdown menu in navigation bar in small screens
2016-09-06 13:16:38 +02:00
Stian Thorgersen 5d20651c66 KEYCLOAK-3475 Fixes for on token expired event 2016-09-06 13:00:37 +02:00
Stian Thorgersen a49a288bbe Merge pull request #3197 from stianst/KEYCLOAK-3475
KEYCLOAK-3475 Call event handlers when initialized with tokens
2016-09-06 11:32:03 +02:00
Marek Posolda fbace351b3 Merge pull request #3198 from mposolda/master
Fuse adapter ZIP download
2016-09-06 10:47:48 +02:00
mposolda fbb2dfcf59 Fuse adapter ZIP download 2016-09-06 10:46:36 +02:00
Ramūnas Kraujutis 05813832fc add newly added translations to Lithuanian locale files 2016-09-06 10:53:23 +03:00
Ramūnas Kraujutis e67f8c7a61 Merge branch 'master-upstream' into feature-lithuanian-locale
# Conflicts:
#	themes/src/main/resources/theme/base/account/messages/messages_en.properties
#	themes/src/main/resources/theme/base/account/theme.properties
#	themes/src/main/resources/theme/base/admin/theme.properties
#	themes/src/main/resources/theme/base/email/theme.properties
#	themes/src/main/resources/theme/base/login/theme.properties
2016-09-06 10:51:01 +03:00
Stian Thorgersen 7a66b055be KEYCLOAK-3475 Call event handlers when initialized with tokens 2016-09-06 09:00:29 +02:00
Marek Posolda e3ddc5a639 Merge pull request #3194 from mposolda/master
KEYCLOAK-3525 Validation callback when creating/updating protocolMapper
2016-09-06 08:24:26 +02:00
mposolda 8c5b1e4892 KEYCLOAK-3525 Validation callback when creating/updating protocolMapper 2016-09-06 07:15:27 +02:00
Marek Posolda ad1d3adb9e Merge pull request #3196 from mposolda/fuse-zip
KEYCLOAK-3526 Fuse adapter ZIP fix
2016-09-06 07:14:51 +02:00
mposolda e18f3edbcd KEYCLOAK-3526 Fuse adapter ZIP fix 2016-09-06 07:14:01 +02:00
Marek Posolda 6ede760725 Merge pull request #3083 from martin-kanis/master
Package Fuse adapter as overlay zip
2016-09-06 05:44:27 +02:00
Marek Posolda db0f05fb86 Merge pull request #3192 from mposolda/master
KEYCLOAK-2957 IdpEmailVerificationAuthenticator should setEmailVerifi…
2016-09-05 23:03:03 +02:00
mposolda 03c05bd72b KEYCLOAK-2957 IdpEmailVerificationAuthenticator should setEmailVerified to true after successfuly link user by email verification 2016-09-05 18:04:24 +02:00
Grégoire Paris c867fcf9e7 Remove duplicate untranslated word 2016-09-05 17:12:21 +02:00
Stian Thorgersen 22e85b11eb Merge pull request #3190 from vramik/KEYCLOAK-3489
KEYCLOAK-3489 Database migration testing
2016-09-05 15:19:24 +02:00
Vlasta Ramik 39fe439573 Database migration testing 2016-09-05 13:39:21 +02:00
Stian Thorgersen fc6b7ea8ee Enabled Norwegian translation 2016-09-05 09:45:44 +02:00
Stian Thorgersen 0e1edb3d7a Merge pull request #3170 from TeliaSoneraNorge/issue/KEYCLOAK-3487-add-norwegian-localization
Add Norwegian localization
2016-09-05 09:42:44 +02:00
Stian Thorgersen 7a77055e58 Merge pull request #3180 from mbaluch/master
A class to generate a single jUnit XML file. This file will be co…
2016-09-05 09:37:33 +02:00
Stian Thorgersen d9e95455a2 Merge pull request #3172 from mwcz/js-updateToken-withCredentials
send cookies along with keycloak.updateToken()
2016-09-05 09:37:00 +02:00
Stian Thorgersen f5b4efc080 Merge pull request #3131 from abstractj/removal-changeset
Removal of never used classes from the changeset package
2016-09-05 09:35:08 +02:00
Stian Thorgersen b1a233e41f Merge branch 'feature-fix-time-selector' of https://github.com/ramunask/keycloak into ramunask-feature-fix-time-selector 2016-09-05 09:32:11 +02:00
Stian Thorgersen 4d6e656b02 Merge pull request #3150 from stoffus/bug-fix-in-reset-password-tpl
KEYCLOAK-3441 Respect registrationEmailAsUsername in reset-password template
2016-09-05 09:10:49 +02:00
Stian Thorgersen 3354e7c98e Merge pull request #3148 from wadahiro/KEYCLOAK-3435
KEYCLOAK-3435 Fix some minor issues in the Admin Console UI
2016-09-05 09:09:30 +02:00
Ramunas Kraujutis 05fe17be4f merge latest English messages 2016-09-04 22:20:30 +03:00
Ramunas Kraujutis 2e9f14dfd8 Merge branch 'master-upstream' into feature-lithuanian-locale
# Conflicts:
#	themes/src/main/resources/theme/base/account/messages/messages_en.properties
#	themes/src/main/resources/theme/base/account/theme.properties
#	themes/src/main/resources/theme/base/admin/theme.properties
#	themes/src/main/resources/theme/base/email/theme.properties
#	themes/src/main/resources/theme/base/login/theme.properties
2016-09-04 22:20:03 +03:00
Marek Posolda 404aa69adb Merge pull request #3187 from mposolda/master
KEYCLOAK-3349 Support for 'request' and 'request_uri' parameters
2016-09-02 21:58:25 +02:00
mposolda a24a43c4be KEYCLOAK-3349 Support for 'request' and 'request_uri' parameters 2016-09-02 20:20:38 +02:00
mposolda 892d5fd1b7 TestingExportImport in separate resource 2016-09-02 20:20:38 +02:00
Stian Thorgersen 258f7c8d60 Merge pull request #3176 from stianst/KEYCLOAK-3501
KEYCLOAK-3501 Fix NPE in migration of OTP action
2016-09-02 10:11:33 +02:00
Mohit Suman b17bd9e660 Fixed dropdown menu in navigation bar in small screens 2016-09-02 01:37:10 +05:30
Pedro Igor 43d23835d0 Merge pull request #3179 from pedroigor/KEYCLOAK-3472
[KEYCLOAK-3472] - Multiple paths with the same name and tests
2016-09-01 10:00:33 -03:00
Mohit Suman d11efa363c Dropdown alignment with the empty state 2016-09-01 16:02:34 +05:30
Mohit Suman 8f0afb2551 Add empty state for Identitiy Provider in admin console 2016-09-01 15:36:17 +05:30
Marek Baluch c874f96228 A class which generates a single junit xml file. This file will be consumed by Polarion 2016-09-01 10:18:06 +02:00
Pedro Igor ce78cc1d1c [KEYCLOAK-3472] - Multiple paths with the same name and tests 2016-08-31 21:04:36 -03:00
Marek Posolda 599c69a2a3 Merge pull request #3177 from vmuzikar/KEYCLOAK-3421
KEYCLOAK-3421 Validation for URI fragments in redirect_uri
2016-08-31 19:39:28 +02:00
Pedro Igor 9daced953e Merge pull request #3157 from ramunask/feature-fix-en-translation
KEYCLOAK-3463 fixed translation for authz-policy-decision-strategy.tooltip
2016-08-31 09:18:31 -03:00
Vaclav Muzikar 1b085d3e13 KEYCLOAK-3421 Validation for URI fragments in redirect_uri 2016-08-31 13:07:33 +02:00
Stian Thorgersen 1bea93b1e1 KEYCLOAK-3501 Fix NPE in migration of OTP action 2016-08-31 12:05:49 +02:00
Pedro Igor 16bd2fb8f8 Merge pull request #3175 from pedroigor/KEYCLOAK-3337
[KEYCLOAK-3337] - Support more specific date/time periods with the Time policy provider
2016-08-30 18:16:09 -03:00
Marek Posolda e8efe10fc8 Merge pull request #3174 from mposolda/master
KEYCLOAK-3416 Add support for signed Userinfo requests
2016-08-30 22:18:09 +02:00
Pedro Igor 73bcfba5f3 [KEYCLOAK-3337] - Support more specific date/time periods with the Time policy provider 2016-08-30 16:32:00 -03:00
mposolda 02f28a7e8e KEYCLOAK-3416 Add support for signed Userinfo requests 2016-08-30 20:21:04 +02:00
Stian Thorgersen 5a4bb5f3f0 Merge pull request #3168 from stianst/master
KEYCLOAK-3462 Fix exception not displayed in init from KeycloakServer
2016-08-30 09:47:31 +02:00
Marek Posolda 235623301e Merge pull request #3171 from mposolda/master
KEYCLOAK-3424
2016-08-29 16:24:54 +02:00
mposolda f4aee129e4 KEYCLOAK-3424 Issuer or token-endpoint as audience in signed JWT 2016-08-29 14:43:35 +02:00
mposolda a7f9a6e095 KEYCLOAK-3424 Support for import from public key 2016-08-29 14:43:29 +02:00
Caroline Olsen 539d9863aa Add Norwegian localization
KEYCLOAK-3487
2016-08-29 11:01:50 +02:00
Stian Thorgersen 4f51b7b34c KEYCLOAK-3462 Fix exception not displayed in init from KeycloakServer 2016-08-29 09:21:22 +02:00
Stian Thorgersen 0e5af3710e Merge pull request #3166 from ssilvert/dmr-config-dev-doc
KEYCLOAK-3196: Update dev doc for keycloak subsystem configuration.
2016-08-29 08:12:28 +02:00
Stan Silvert a462dd78bb Update dev doc for keycloak subsystem configuration. 2016-08-26 16:40:34 -04:00
mwcz ec5289b5c8 send cookies along with keycloak.updateToken() 2016-08-26 11:23:44 -04:00
Stian Thorgersen 2a29f2a9c6 Merge pull request #3151 from ssilvert/dmr-server-config
KEYCLOAK-3196: Use WildFly management model for server configuration.
2016-08-26 13:44:45 +02:00
Stian Thorgersen 9ffd6548ce Merge pull request #3146 from mhajas/KEYCLOAK-3161
KEYCLOAK-3161 Migrate SAML adapter tests
2016-08-26 13:40:58 +02:00
Stian Thorgersen cfd41fbc8b Merge pull request #3165 from StephenOTT/patch-1
typo fixes in Readme files
2016-08-26 13:40:12 +02:00
Stian Thorgersen 4c2cca4672 Merge pull request #3118 from wadahiro/issue/KEYCLOAK-3397-add-japanese-localization
KEYCLOAK-3397 Add Japanese localization
2016-08-26 11:38:03 +02:00
Hiroyuki Wada 53557d9cfd KEYCLOAK-3397 Fix Japanese translation 2016-08-26 10:46:45 +09:00
Stan Silvert a0054bd77f Merge pull request #1 from vramik/KEYCLOAK-3459
KEYCLOAK-3459 Adapt testsuite according to server configuration insid…
2016-08-25 07:21:34 -04:00
Vlasta Ramik 099de9e6e3 KEYCLOAK-3459 Adapt testsuite according to server configuration inside standalone.xml instead of keycloak-server.json 2016-08-25 12:36:39 +02:00
Stephen Russett cfd61dc359 typo fix in google example readme 2016-08-24 23:45:52 -04:00
Stephen Russett 99f453b25c typo fix 2016-08-24 23:40:21 -04:00
Marek Posolda d138b19adb Merge pull request #3142 from vmuzikar/KEYCLOAK-3429
KEYCLOAK-3429 Fix behaviour of redirect_uri parameter with query components
2016-08-24 09:53:29 +02:00
Stan Silvert 345163994a KEYCLOAK-3196: Allow expressions in SPI properties. 2016-08-23 13:02:11 -04:00
Stan Silvert 09090cec24 KEYCLOAK-3196: Resolve conflicts. Port keycloak-server.json changes to xml
and cli
2016-08-23 11:56:21 -04:00
Stan Silvert 3abcf713e5 KEYCLOAK-3196: Test need ability to load keycloak-server.json from
/META-INF
2016-08-23 11:27:06 -04:00
Stan Silvert e4d97485ec KEYCLOAK-3196: Create master cli script for server-subsystem. 2016-08-23 11:27:04 -04:00
Stan Silvert 1489bd734a KEYCLOAK-3196: Add CLI help text. 2016-08-23 11:27:01 -04:00
Stan Silvert ef442cae92 KEYCLOAK-3196: Create single place to declare default keycloak subsystem
config.
2016-08-23 11:26:58 -04:00
Stan Silvert 3493aa4ab7 KEYCLOAK-3196: Use WildFly management model for server configuration. 2016-08-23 11:26:56 -04:00
Marek Posolda 3be47dee37 Merge pull request #3162 from mposolda/master
KEYCLOAK-3460 Support for ClientUpdatedEvent
2016-08-23 16:35:14 +02:00
mposolda 494d9973a6 KEYCLOAK-3460 Support for ClientUpdatedEvent 2016-08-23 14:57:31 +02:00
Stian Thorgersen e28a3750cd Merge pull request #3149 from vmuzikar/KEYCLOAK-3437
KEYCLOAK-3437 Add User Federation Console UI test
2016-08-23 12:57:02 +02:00
Stian Thorgersen 014c8e068f Merge pull request #3156 from vmuzikar/KEYCLOAK-3448
KEYCLOAK-3448 Stabilize Internationalization UI Test
2016-08-23 12:55:53 +02:00
Stian Thorgersen 3890867383 Merge pull request #3133 from fkiss/master-email-ibmjdk
KEYCLOAK-3351 TrustStoreEmailTest fix for ibmjdk
2016-08-23 12:54:12 +02:00
Stian Thorgersen d499b8a489 Merge pull request #3159 from stianst/master
KEYCLOAK-3447 Manual upgrade of database schema
2016-08-23 12:38:28 +02:00
Ramunas Kraujutis 352602da39 change lt locale position to be ordered alphabetically 2016-08-22 19:12:03 +03:00
Ramunas Kraujutis c333d1eaa9 change lt locale position to be ordered alphabetically 2016-08-22 19:10:20 +03:00
Stian Thorgersen c522a20ab9 KEYCLOAK-3447 Manual upgrade of database schema 2016-08-22 10:22:08 +02:00
Ramunas Kraujutis ee66cb51da adding Lithuanian translation 2016-08-21 16:14:22 +03:00
Ramunas Kraujutis 93d65fa895 fix select options and add values to fix issues when non-English locale is used with translated values 2016-08-21 16:09:18 +03:00
Ramunas Kraujutis 6aafde7819 fixed translation for authz-policy-decision-strategy.tooltip changing "policy" to "permission" 2016-08-21 16:04:51 +03:00
Vaclav Muzikar 365a1b66c8 KEYCLOAK-3448 Stabilize Internationalization UI Test 2016-08-19 11:40:01 +02:00
Pedro Igor fa1fb3a3a9 Merge pull request #3152 from pedroigor/KEYCLOAK-3377
[KEYCLOAK-3377] - Add pagination to authorization UI
2016-08-18 19:43:34 -03:00
Dimitri Teleguin b109ce14b0 KEYCLOAK-3327 Make realm attributes accessible via the RealmModel 2016-08-18 23:28:32 +03:00
Bill Burke 561661d726 Merge remote-tracking branch 'upstream/master' 2016-08-18 13:13:28 -04:00
Bill Burke 6592014707 Update users.js 2016-08-18 13:13:08 -04:00
Pedro Igor 4cd0a8e894 [KEYCLOAK-3377] - Add pagination to authorization UI 2016-08-18 13:29:54 -03:00
Bill Burke 6c44e9befa Merge remote-tracking branch 'upstream/master' 2016-08-18 11:57:25 -04:00
Bill Burke 8e9cfc4a28 creds 2016-08-18 11:52:00 -04:00
Christopher Svensson d20d5ce2d7 Bug fix: Respect registrationEmailAsUsername in reset-password template. 2016-08-18 10:24:37 +02:00
Christopher Svensson 243c8cc2cd Merge remote-tracking branch 'keycloak/master' 2016-08-18 10:19:27 +02:00
Stian Thorgersen 7d444c8b13 Merge pull request #3147 from stianst/master
Tweak Travis
2016-08-17 08:08:13 +02:00
Vaclav Muzikar be83e2fb6b KEYCLOAK-3437 Add User Federation Console UI test 2016-08-16 15:47:02 +02:00
Hiroyuki Wada b34acd4cc2 KEYCLOAK-3397 Add Japanese localization 2016-08-16 20:44:47 +09:00
Hiroyuki Wada 85ac784fd0 KEYCLOAK-3435 Fix some minor issues in the Admin Console UI 2016-08-16 20:34:48 +09:00
Stian Thorgersen ab2368be34 Tweak Travis 2016-08-16 07:49:17 +02:00
Pedro Igor ba076ad159 Merge pull request #3144 from pedroigor/KEYCLOAK-3144
[KEYCLOAK-3144] - Add authorization settings when exporting/importing a realm
2016-08-15 11:49:49 -03:00
Pedro Igor a8d2b810cf [KEYCLOAK-3144] - Add authorization settings when exporting/importing a realm. 2016-08-15 10:35:28 -03:00
mhajas 285a99d903 Migrate SAML adapter tests 2016-08-13 11:09:48 +02:00
Pedro Igor fd983690e2 Merge pull request #3140 from pedroigor/KEYCLOAK-3390
[KEYCLOAK-3390] - Updating authorization objects doesn't invalidate cache in cluster
2016-08-12 12:45:20 -03:00
Marek Posolda 006a0f856e Merge pull request #3143 from mposolda/oidc-dynamic2
KEYCLOAK-3424 Support for save JWKS in OIDC ClientRegistration endpoint
2016-08-12 17:33:07 +02:00
Pedro Igor bfe10e34e7 [KEYCLOAK-3390] - Updating authorization objects doesn't invalidate cache in cluster 2016-08-12 11:15:13 -03:00
mposolda 2cba13db9c KEYCLOAK-3424 Possibility to import JWK key through admin console 2016-08-12 15:51:14 +02:00
mposolda 3eb9134e02 KEYCLOAK-3424 Support for save JWKS in OIDC ClientRegistration endpoint 2016-08-12 15:51:14 +02:00
Vaclav Muzikar b7f2e0b5ff KEYCLOAK-3429 Fix behaviour of redirect_uri parameter with query components 2016-08-12 14:02:17 +02:00
Pedro Igor 27187c11f1 Merge pull request #3138 from pedroigor/KEYCLOAK-3428
[KEYCLOAK-3428] - Removing scope policies in case the resource does not match
2016-08-11 14:59:20 -03:00
Pedro Igor 0030df060b [KEYCLOAK-3428] - Removing scope policies in case the resource does not match 2016-08-11 14:58:14 -03:00
Marek Posolda f6f587e472 Merge pull request #3137 from thomasdarimont/issue/KEYCLOAK-3412-remove-unused-adminEventBuilder-error-method
KEYCLOAK-3412 - Remove erroneous AdminEventBuilder.error method
2016-08-11 17:41:04 +02:00
Marek Posolda 841c6b619a Merge pull request #3136 from mposolda/oidc-dynamic2
OIDC dynamic client registrations from conformance testsuite
2016-08-11 17:16:11 +02:00
Thomas Darimont e0d70a35d6 KEYCLOAK-3412 - Remove erroneous AdminEventBuilder.error method
Wasn't used within the Keycloak codebase and wouldn't have worked either
since the OperationType lookup would always fail since there are no
"_ERROR" operation types.

Signed-off-by: Thomas Darimont <thomas.darimont@gmail.com>
2016-08-11 16:10:49 +02:00
mposolda 0520d465c1 KEYCLOAK-3414 Support for client registration from trusted hosts 2016-08-11 15:55:32 +02:00
mposolda a8fb988e31 KEYCLOAK-3406 OIDC dynamic client registrations specs fixes 2016-08-11 15:54:51 +02:00
Marek Posolda c34d175572 Merge pull request #3135 from mposolda/master
Fix ExportImportTest
2016-08-11 15:53:16 +02:00
mposolda 9c7442c75b Fix ExportImportTest 2016-08-11 15:51:56 +02:00
fkiss de888fc8a1 KEYCLOAK-3351 TrustStoreEmailTest fix for ibmjdk 2016-08-11 10:52:29 +02:00
Bruno Oliveira 4d8e19eb7c Removal of never used classes from the changeset package 2016-08-10 17:28:38 -03:00
Marek Posolda 2df7d6252e Merge pull request #3128 from mposolda/master
Set version to 2.2.0-SNAPSHOT
2016-08-10 09:02:13 +02:00
mposolda d52e043322 Set version to 2.2.0-SNAPSHOT 2016-08-10 08:57:18 +02:00
Marek Posolda 6c8d55d534 Merge pull request #3125 from thomasdarimont/issue/KEYCLOAK-3391-hide-service-account-roles-if-service-accounts-disabled
KEYCLOAK-3391 Better control over service account roles tab visibility
2016-08-10 08:16:27 +02:00
Marek Posolda 26bc07b2c4 Merge pull request #3126 from pedroigor/KEYCLOAK-3398
[KEYCLOAK-3398] - Review input fields on AuthZ UI to fetch data on demand
2016-08-10 06:50:51 +02:00
Bill Burke 7f6fc170dc Merge pull request #3119 from fkiss/master-exportimport
KEYCLOAK-3211 - ExportImportTest fix for Wildfly
2016-08-09 20:59:04 -04:00
Bill Burke 741bbf471f Merge pull request #3123 from patriot1burke/master
components import/export
2016-08-09 20:58:20 -04:00
Pedro Igor 70eb27ec83 [KEYCLOAK-3398] - Review input fields on AuthZ UI to fetch data on demand 2016-08-09 21:56:29 -03:00
Thomas Darimont 96b729886f KEYCLOAK-3391 Better control of service account roles tab visibility
Previously the service account roles remain visible when changing
the client type from confidential to public or bearer only.

We now only show the service account roles tab iif:
- service accounts are enabled
- client access type is set to confidential
2016-08-10 00:44:14 +02:00
Bill Burke 530870f05e realm components import/export 2016-08-09 15:06:29 -04:00
Bill Burke 1633f062d5 Merge remote-tracking branch 'upstream/master' 2016-08-09 12:25:13 -04:00
Bill Burke ff703f935f component export/import 2016-08-09 12:25:04 -04:00
fkiss 4974079794 KEYCLOAK-3211 - ExportImportTest fix for Wildfly 2016-08-09 15:20:40 +02:00
Bill Burke d94515cdae Merge pull request #3117 from patriot1burke/master
deployer, jta lookup, merge user fed/storage
2016-08-08 17:46:35 -04:00
Bill Burke f838c697d1 Merge remote-tracking branch 'upstream/master' 2016-08-08 16:04:16 -04:00
Bill Burke d14de43ac7 merge User Federation/Storage menu 2016-08-08 16:02:06 -04:00
Marek Posolda e198e7e0b9 Merge pull request #3116 from mposolda/master
KEYCLOAK-3400 OIDC request with missing response_type should respond …
2016-08-08 21:50:08 +02:00
Bill Burke 83306963e8 jta transaction abstraction 2016-08-08 12:32:36 -04:00
mposolda 65e2f127c9 KEYCLOAK-3400 OIDC request with missing response_type should respond with error 2016-08-08 16:11:50 +02:00
Marek Posolda 64c2077c0b Merge pull request #3115 from mposolda/master
KEYCLOAK-2169 KEYCLOAK-3286 Support for at_hash and c_hash
2016-08-08 12:36:33 +02:00
mposolda 9be6777685 KEYCLOAK-2169 KEYCLOAK-3286 Support for at_hash and c_hash 2016-08-08 10:57:44 +02:00
Bill Burke f14f303dfe Merge remote-tracking branch 'upstream/master' 2016-08-07 11:50:44 -04:00
Bill Burke 33d7d89ad9 provider hot deployment 2016-08-07 11:41:52 -04:00
Marek Posolda 65c49c39f4 Merge pull request #3114 from mposolda/master
KEYCLOAK-3321 OIDC requests without 'nonce' claim should be rejected …
2016-08-05 16:45:56 +02:00
Marek Posolda 6c0f685c39 Merge pull request #2948 from thomasdarimont/issue/KEYCLOAK-3142-Add-ResourceType-to-AdminEvents
KEYCLOAK-3142 - Capture ResourceType that triggers an AdminEvent
2016-08-05 15:07:56 +02:00
mposolda e0a59baaf2 KEYCLOAK-3321 OIDC requests without 'nonce' claim should be rejected unless using the code flow. Started responseType tests 2016-08-05 15:05:26 +02:00
Marek Posolda 6a797a61a9 Merge pull request #3113 from vmuzikar/KEYCLOAK-3367
KEYCLOAK-3367 Improve stability of Adapters Tests
2016-08-05 09:44:52 +02:00
Thomas Darimont e49afb2d83 KEYCLOAK-3142 - Revised according to codereview
Liquibase Moved schema evolution configuration from jpa-changelog-2.1.0
to jpa-changelog-2.2.0.
Corrected wrong ResourceType references in tests.
Adapted AdminEvents copy-routines to be aware of resourceType attribute.
Added ResourceType enum to exposed ENUMS of ServerInfoAdminResource.

Signed-off-by: Thomas Darimont <thomas.darimont@gmail.com>
2016-08-05 00:01:03 +02:00
Vaclav Muzikar 0d225f44de KEYCLOAK-3367 Improve stability of Adapters Tests 2016-08-04 14:43:49 +02:00
Thomas Darimont 586f6eeece KEYCLOAK-3142 - Capture ResourceType that triggers an AdminEvent
Introduced new ResourceType enum for AdminEvents which lists
the current supported ResourceTypes for which AdminEvents
can be fired.

Previously it was difficult for custom EventListeners to figure
out which ResourceType triggered an AdminEvent in order
to handle it appropriately, effectively forcing users to parse
the representation.
Having dedicated resource types as a marker on an AdminEvent helps
to ease custom EventListener code.

We now also allow filtering of admin events by ResourceType in the
admin-console.

Signed-off-by: Thomas Darimont <thomas.darimont@gmail.com>
2016-08-04 11:30:02 +02:00
Bill Burke f91907c8f9 Merge pull request #3107 from thomasdarimont/issue/KEYCLOAK-3392-honor-web-context-for-odic-endpoint-link
KEYCLOAK-3392 Use authUrl prefix for OIDC Configuration link
2016-08-03 21:34:00 -04:00
Bill Burke 9e0667bc11 Merge pull request #3080 from trajakovic/issue/editAccountHtmlTtile
Fixing typo in account resource(s) bundle
2016-08-03 21:31:44 -04:00
Bill Burke a3ffb32532 Merge pull request #3060 from fkiss/master-ldaps
KEYCLOAK-2281 added ldap tests over ssl
2016-08-03 21:31:12 -04:00
Bill Burke 1e7cf9fb3f Merge pull request #3088 from thomasdarimont/issue/KEYCLOAK-3380-allow-ignore-pattern-in-filter
KEYCLOAK-3380 Allow to configure paths to skip in KeycloakOIDCFilter
2016-08-03 21:30:20 -04:00
Bill Burke f75c0d3e61 Merge pull request #3111 from patriot1burke/master
user storage provider jpa example
2016-08-03 21:27:30 -04:00
Bill Burke 534ee2e50c Merge remote-tracking branch 'upstream/master' 2016-08-03 19:16:45 -04:00
Bill Burke 70722d0d3d user storage provider jpa example 2016-08-03 19:16:11 -04:00
Marek Posolda 0292acd5e2 Merge pull request #3110 from mposolda/master
Master: Oracle & EAP7 overlay
2016-08-03 14:24:50 +02:00
mposolda bf3541414c KEYCLOAK-3393 Fix Keycloak on EAP7 overlay 2016-08-03 13:01:44 +02:00
mposolda 9242e972c0 Fix Oracle DB 2016-08-03 13:01:30 +02:00
Thomas Darimont 57a96fa6aa KEYCLOAK-3392 Use authUrl prefix for OIDC Configuration link
We now use the {{authUrl}} prefix for the OIDC configuration link
in the admin-console to honor different web-context paths.

Previously when a different web-context than /auth was configured
the generated link pointed to the wrong location.

Signed-off-by: Thomas Darimont <thomas.darimont@gmail.com>
2016-08-02 15:52:22 +02:00
Bill Burke 7f08717dfb Merge pull request #3105 from patriot1burke/master
component model
2016-08-02 09:28:55 -04:00
Bill Burke 9365a40426 Merge pull request #3104 from zschwarz/exclude-test
KEYCLOAK-3389 Added general exclude for tests
2016-08-02 07:19:42 -04:00
Bill Burke ae58d64741 Merge pull request #3092 from vmuzikar/KEYCLOAK-3381
KEYCLOAK-3381 Fix and stabilize some Console UI tests
2016-08-02 07:19:28 -04:00
Bill Burke 4a8b4bcdec Merge pull request #3087 from zschwarz/password-policy
KEYCLOAK-3379 Password policy tests refactoring
2016-08-02 07:15:58 -04:00
Bill Burke e3aec098a2 Merge pull request #3064 from cainj13/oneSamlAttributeStatement
SamlProtocol should only drop attributes into a single attributeStatement
2016-08-02 07:14:08 -04:00
Bill Burke 3b9b673e5e turn off menu item 2016-08-02 06:57:48 -04:00
Bill Burke 17e75950fe more fixes 2016-08-02 06:56:22 -04:00
Bill Burke 1c75b03e59 props 2016-08-02 06:50:13 -04:00
Marek Posolda 27814dab65 Merge pull request #3102 from mposolda/master
Fixing mongo
2016-08-02 12:25:41 +02:00
mposolda b3a55df1e7 Fixing mongo 2016-08-02 10:58:44 +02:00
Marek Posolda 7ec3813a07 Merge pull request #3103 from mposolda/travis-fix
Travis workaround - another attempt
2016-08-02 09:21:04 +02:00
mposolda 62b96143a1 Travis workaround - another attempt 2016-08-02 09:20:33 +02:00
Marek Posolda ec6b81e42d Merge pull request #3101 from mposolda/master
New component model & fixes
2016-08-02 08:10:11 +02:00
Bill Burke 3a5d4a3723 fix 2016-08-02 05:50:23 +02:00
Bill Burke 1d695237b7 fix 2016-08-02 05:49:50 +02:00
Bill Burke 09693eb108 component model 2016-08-02 05:48:57 +02:00
mposolda 3b3368eead KEYCLOAK-3237 Add scope=openid to KeycloakInstalled 2016-08-02 05:45:55 +02:00
mposolda a5cbe113fd Migration fix 2016-08-02 05:45:20 +02:00
mposolda 9688880837 Fix testsuite with mongo 2016-08-02 05:44:40 +02:00
Marek Posolda 98be930027 Merge pull request #3100 from mposolda/master
Fix travis
2016-08-02 05:42:29 +02:00
mposolda 83b4495e69 Fix travis 2016-08-02 05:40:03 +02:00
Pedro Igor bd73b0aee6 Merge pull request #3097 from pedroigor/KEYCLOAK-3385
[KEYCLOAK-3385] - Improvements to evaluation tool UI and result
2016-08-01 20:43:33 -03:00
Pedro Igor ae1a7542d8 [KEYCLOAK-3385] - Improvements to evaluation tool UI and result 2016-08-01 18:01:24 -03:00
Bill Burke 7d1bdf6e81 Update .travis.yml 2016-08-01 16:39:06 -04:00
Bill Burke d64e7394a7 fix 2016-08-01 14:55:06 -04:00
Bill Burke 059011e82f Update .travis.yml 2016-08-01 14:28:34 -04:00
Marek Posolda eaf28f72c1 Merge pull request #3095 from mposolda/saml-ignore-master
Ignore KcSamlBrokerTest and KcSamlSignedBrokerTest again
2016-08-01 19:04:11 +02:00
mposolda aa177dd9f9 Ignore KcSamlBrokerTest and KcSamlSignedBrokerTest again 2016-08-01 19:03:07 +02:00
Bill Burke a8a77add39 fix 2016-08-01 12:07:02 -04:00
Bill Burke 5facec73e4 Merge remote-tracking branch 'upstream/master' 2016-08-01 11:19:09 -04:00
Bill Burke 91a267a0d8 component model 2016-08-01 11:18:58 -04:00
Vaclav Muzikar 0147fbe489 KEYCLOAK-3381 Fix and stabilize some Console UI tests 2016-08-01 15:10:18 +02:00
Marek Posolda a9ccabdce5 Merge pull request #3089 from mposolda/master
Fix DB2 and Oracle
2016-08-01 14:32:12 +02:00
zschwarz e04ad9d7b6 Added general exclude for tests 2016-08-01 13:17:24 +02:00
mposolda c5d40a76ff Fix DB2 and Oracle 2016-08-01 12:31:16 +02:00
Thomas Darimont 79c7203fe8 KEYCLOAK-3380 Allow to configure paths to skip in KeycloakOIDCFilter
We now allow configuration of path patterns which should not
be handled by the `KeycloakOIDCFilter` than can be specified via
the new init-parameter `keycloak.config.skipPattern` of
the `KeycloakOIDCFilter`.
Patterns are matched against the requestURI without the context-path.
A request for `/myapp/index.html` would be matched with `/index.html`
against the skip pattern.
This allows for for more flexible path handling when using the
`KeycloakOIDCFilter` in combination with existing applications.

Signed-off-by: Thomas Darimont <thomas.darimont@gmail.com>
2016-08-01 11:43:49 +02:00
Marek Posolda 0d99b797b6 Merge pull request #3068 from mstruk/KEYCLOAK-2981-m
KEYCLOAK-2981 Upload-certificate admin endpoint does not nullify private keys
2016-08-01 11:20:55 +02:00
Marek Posolda 59f228be2b Merge pull request #3076 from Smartling/KEYCLOAK-3097
KEYCLOAK-3097: Fix JBoss Logging scope
2016-08-01 09:30:02 +02:00
Marek Posolda 159b752fb0 Merge pull request #3085 from pedroigor/master
[KEYCLOAK-3376] - Show authorization data when evaluating authorization requests
2016-08-01 09:09:55 +02:00
Marek Posolda b0c7746eeb Merge pull request #3084 from mhajas/KEYCLOAK-3165
KEYCLOAK-3165 Migrate SAML Filter tests to integration arquillian testsuite
2016-08-01 09:07:19 +02:00
Marek Posolda bbeac6d741 Merge pull request #3086 from cargosoft/KEYCLOAK-3369
KEYCLOAK-3369 Fire RealmPostCreateEvent
2016-08-01 08:56:09 +02:00
Marek Posolda a8eb3ca65a Merge pull request #3065 from wyvie/samltest
[KEYCLOAK-3035] Fixed broker tests, should not randomly fail anymore
2016-08-01 08:39:22 +02:00
Dmitry Telegin fea277a7f5 KEYCLOAK-3369: Fire RealmPostCreateEvent 2016-08-01 01:00:50 +03:00
wyvie cd94778dec [KEYCLOAK-3035] Fixed broker tests, should not randomly fail anymore 2016-07-31 18:57:15 +02:00
Pedro Igor bd5b434894 [KEYCLOAK-3376] - Show authorization data when evaluating authorization requests 2016-07-29 22:09:17 -03:00
Pedro Igor 26f0f6509a Merge pull request #3082 from pedroigor/master
[KEYCLOAK-3372] - Code cleanup and more testing
2016-07-29 19:28:01 -03:00
Pedro Igor 7983ed064f [KEYCLOAK-3372] - More tests and code cleanup 2016-07-29 15:25:36 -03:00
Pedro Igor 607b305c2f [KEYCLOAK-3372] - Adding tests for servlet authorization 2016-07-29 12:42:53 -03:00
Martin Kanis 8ad3c3fb03 Package Fuse adapter as overlay zip 2016-07-29 11:16:05 +02:00
mhajas 824890323d Migrate SAML Filter tests to integration arquillian tests 2016-07-29 11:06:09 +02:00
zschwarz 5011960cac Password policy tests refactoring 2016-07-29 10:24:13 +02:00
Pedro Igor 3c8ed8e3d8 [KEYCLOAK-3372] - Code cleanup 2016-07-29 05:18:38 -03:00
Pedro Igor e6ce2e138d Merge pull request #3081 from pedroigor/master
[KEYCLOAK-3338] More testing and improvements when importing role poicies
2016-07-28 15:10:30 -03:00
Pedro Igor 8cfa50f134 [KEYCLOAK-3338] More testing and improvements when importing role policies 2016-07-28 12:31:46 -03:00
Tomislav Rajaković 2b3859f462 Fixing typo in account resource bundle: editAccountHtmlTtile -> editAccountHtmlTitle 2016-07-28 16:34:52 +02:00
Bill Burke 5d9fe09599 Merge pull request #3070 from mstruk/KEYCLOAK-2571
KEYCLOAK-2571 RESET_PASSWORD_ERROR and UPDATE_PASSWORD_ERROR events not fired
2016-07-28 07:23:32 -04:00
Bill Burke 2219cd363e Merge pull request #3079 from patriot1burke/master
KEYCLOAK-3268
2016-07-28 07:22:45 -04:00
Pedro Igor b08800fbd8 Merge pull request #3072 from pedroigor/KEYCLOAK-3338
[KEYCLOAK-3338] - Adding client roles to role policy and UX improvements
2016-07-27 18:14:25 -03:00
Pedro Igor 7e1b97888a [KEYCLOAK-3338] - Adding client roles to role policy and UX improvements 2016-07-27 15:15:14 -03:00
Scott Rossillo 322597b420 KEYCLOAK-3097: Fix JBoss Logging scope
JBoss Logging Framework required by Keycloak Core.
2016-07-27 12:35:21 -04:00
Bill Burke bd499e1c55 fix pom 2016-07-27 10:37:16 -04:00
Bill Burke 46b4bb0909 KEYCLOAK-3268 2016-07-27 09:28:48 -04:00
Marko Strukelj 59e0570cdf KEYCLOAK-2571 RESET_PASSWORD_ERROR and UPDATE_PASSWORD_ERROR events not fired 2016-07-26 21:32:57 +02:00
Bill Burke c925033944 Merge remote-tracking branch 'upstream/master' 2016-07-26 11:31:22 -04:00
Marko Strukelj 94f583e935 KEYCLOAK-2981 Upload-certificate admin endpoint does not nullify private keys 2016-07-25 11:13:21 +02:00
Bill Burke 69f051fb0a test user fed registration spi 2016-07-23 08:55:06 -04:00
Bill Burke 3973aed57d Merge pull request #2989 from thomasdarimont/issue/KEYCLOAK-3234-allow-restricting-mapper-for-userinfo
KEYCLOAK-3234 Allow restricting claim mapper for userinfo endpoint
2016-07-22 17:54:00 -04:00
Bill Burke 73d3db6d00 Merge pull request #3063 from patriot1burke/master
user fed spi query fixes and tests.
2016-07-22 17:51:20 -04:00
Josh Cain 535a0763fc put imports back, new IDE snuck a * in there. 2016-07-22 14:57:07 -05:00
Josh Cain 283581f920 SamlProtocol should only drop attributes into a single attributeStatement element 2016-07-22 14:49:48 -05:00
Marek Posolda 488dee71d2 Merge pull request #3062 from mposolda/master
KEYCLOAK-3319 More OIDC tests. Minor refactoring
2016-07-22 20:49:14 +02:00
Bill Burke b6811b96b9 fix test 2016-07-22 14:42:17 -04:00
Bill Burke db852f7e11 preRemove 2016-07-22 14:24:37 -04:00
mposolda 01830fd7f3 KEYCLOAK-3319 More OIDC tests. Minor refactoring 2016-07-22 18:16:58 +02:00
Bill Burke 00d439b6f0 log level oops 2016-07-22 12:09:22 -04:00
Bill Burke 06fca9c897 Merge remote-tracking branch 'upstream/master' 2016-07-22 11:42:14 -04:00
Bill Burke 72d134748c user fed spi querying tests 2016-07-22 11:42:07 -04:00
fkiss e2ad7608c8 KEYCLOAK-2281 added ldap tests over ssl 2016-07-22 16:29:58 +02:00
Marek Posolda a73dd537f3 Merge pull request #3059 from mposolda/master
KEYCLOAK-3354 request and request_uri not supported
2016-07-22 15:12:25 +02:00
mposolda 9169bcd88d KEYCLOAK-3354 request and request_uri not supported 2016-07-22 13:44:45 +02:00
Marek Posolda 94af2e1789 Merge pull request #3058 from mposolda/master
KEYCLOAK-3318 Adapter support for prompt and max_age. Refactoring to …
2016-07-21 21:58:29 +02:00
mposolda 56e011dce4 KEYCLOAK-3318 Adapter support for prompt and max_age. Refactoring to not hardcode OIDC specifics to CookieAuthenticator 2016-07-21 18:19:53 +02:00
Marek Posolda 079026a7be Merge pull request #3055 from mposolda/master
KEYCLOAK-3344 Can't remove realm with mongo model
2016-07-21 14:18:49 +02:00
Pedro Igor 7c6cf8f3b7 Merge pull request #3054 from pedroigor/KEYCLOAK-3313
[KEYCLOAK-3313] - UI improvements and messages
2016-07-21 08:32:02 -03:00
mposolda 981ff90c81 KEYCLOAK-3344 Can't remove realm with mongo model 2016-07-21 12:47:25 +02:00
Pedro Igor 484d5d6e08 [KEYCLOAK-3313] - UI improvements and messages 2016-07-20 22:11:24 -03:00
Bill Burke 0315bd0b87 Merge remote-tracking branch 'upstream/master' 2016-07-20 17:26:15 -04:00
Bill Burke 2a05f00d0c user fed tests 2016-07-20 17:26:00 -04:00
Marek Posolda 05a804b972 Merge pull request #3052 from mposolda/master
KEYCLOAK-3318 Support for prompt=login. More tests for prompt parameter
2016-07-20 22:51:30 +02:00
mposolda f4ddfe4a52 KEYCLOAK-3318 Support for prompt=login. More tests for prompt parameter 2016-07-20 21:27:38 +02:00
Bill Burke 76c4fbb241 Merge pull request #3051 from patriot1burke/master
user fed spi fixes and simple test
2016-07-20 12:51:42 -04:00
Bill Burke 3b0fd71155 Merge pull request #3048 from pedroigor/KEYCLOAK-3320
[KEYCLOAK-3320] - Enable authorization services to WF8 adapter
2016-07-20 11:29:23 -04:00
Bill Burke 6f92bac782 Merge pull request #3000 from tonswieb/master
KEYCLOAK-3265 Support writing a NameIDType AttributeValue
2016-07-20 11:23:18 -04:00
Bill Burke 8b535c5da6 log level 2016-07-20 11:16:20 -04:00
Bill Burke e719722e32 Merge remote-tracking branch 'upstream/master' 2016-07-20 11:01:01 -04:00
Bill Burke c709598fdd user fed spi simple test 2016-07-20 10:59:45 -04:00
Stian Thorgersen 3ef0527a91 Merge pull request #3046 from pdrozd/KEYCLOAK-3336
KEYCLOAK-3336 Arquillian testuite: Added possibility to install serve…
2016-07-20 14:58:29 +02:00
Marek Posolda eb12a307f7 Merge pull request #3050 from mposolda/master
KEYCLOAK-1733 added verifySSL checks for 'basic' and 'query' authenti…
2016-07-20 14:01:35 +02:00
Pedro Igor f36a68308d [KEYCLOAK-3320] - Enable authorization services to WF8 adapter 2016-07-20 08:16:37 -03:00
mposolda 7571dc07f9 KEYCLOAK-1733 added verifySSL checks for 'basic' and 'query' authentication 2016-07-20 11:04:31 +02:00
Marek Posolda e03bf6eef6 Merge pull request #2990 from trex667/feat/keycloak-1733
[KEYCLOAK-1733]: introduce token as query paramter
2016-07-20 10:46:11 +02:00
Pavel Drozd 0e470d75e9 KEYCLOAK-3336 Arquillian testuite: Added possibility to install server patch 2016-07-19 14:22:49 +02:00
Stian Thorgersen 187f4a49ad Merge pull request #3044 from thomasdarimont/issue/KEYCLOAK-3301-support-undertow-in-spring-boot-adapter
KEYCLOAK-3301 Add support for Undertow in Spring Boot Adapter
2016-07-19 09:29:52 +02:00
Stian Thorgersen 0a5e061ca6 Merge pull request #3045 from mhajas/KEYCLOAK-3326
KEYCLOAK-3326 Fix invalidRequesterMessage in tests
2016-07-19 09:29:15 +02:00
Stian Thorgersen 1b517a461e Merge pull request #3041 from stianst/KEYCLOAK-3302
KEYCLOAK-3302 Allow logout with expired refresh token
2016-07-19 08:03:52 +02:00
mhajas a913b8a158 Fix invalidRequesterMessage in tests 2016-07-18 14:21:28 +02:00
Thomas Darimont f574173ed3 KEYCLOAK-3301 Add support for Undertow in Spring Boot Adapter
We now support using Undertow in combination with the Spring Boot Adapter.
2016-07-18 10:07:07 +02:00
Marek Posolda a6bdf81e6d Merge pull request #3040 from mposolda/master
KEYCLOAK-3220 Added test for missing response_type
2016-07-15 22:19:52 +02:00
Stian Thorgersen a42e4af78d Merge pull request #3018 from thomasdarimont/issue/KEYCLOAK-3300-support-jetty-in-spring-boot-adapter
KEYCLOAK-3300 Add support for jetty in spring-boot-adapter
2016-07-15 13:29:16 +02:00
Stian Thorgersen b1ae0a9000 Merge pull request #3003 from iconoeugen/fix/update_server_spi_module_deps_for_script_based
KEYCLOAK-3285: Update server-spi module to include deps required by script based flow executor
2016-07-15 13:27:28 +02:00
Stian Thorgersen 07d7141d98 Merge pull request #3042 from stianst/master
Ignore unstable tests
2016-07-15 12:59:33 +02:00
Stian Thorgersen 0632bc8939 Ignore unstable tests 2016-07-15 12:59:15 +02:00
Stian Thorgersen e708c53730 KEYCLOAK-3302 Allow logout with expired refresh token 2016-07-15 12:56:31 +02:00
mposolda 243105f952 KEYCLOAK-3175 Document run of OIDC Conformance test 2016-07-15 12:51:35 +02:00
Stian Thorgersen 1ce17c459d Merge pull request #3039 from stianst/KEYCLOAK-3192
KEYCLOAK-3192 Ignore disabled required action
2016-07-15 10:38:49 +02:00
Stian Thorgersen daa4d23ac0 Merge pull request #3038 from stianst/KEYCLOAK-3170
KEYCLOAK-3170 Users with only view-users and impersonate can't impers…
2016-07-15 10:38:32 +02:00
Stian Thorgersen 30d651bcee Merge pull request #3036 from stianst/master
Added umlats test to registration test
2016-07-15 10:38:23 +02:00
mposolda fda0a79e27 KEYCLOAK-3237 Add scopes_supported to OIDC WellKnown endpoint 2016-07-15 09:47:09 +02:00
mposolda 021c2ec701 KEYCLOAK-3220 Added test for missing response_type 2016-07-15 09:15:09 +02:00
Stian Thorgersen fbf00ba1cd Added umlats test to registration test 2016-07-15 09:05:41 +02:00
Marek Posolda a2ead8743f Merge pull request #3035 from mposolda/master
OIDC fixes
2016-07-15 09:03:31 +02:00
Stian Thorgersen 5a0b86f814 Merge pull request #3037 from stianst/KEYCLOAK-3266
KEYCLOAK-3266 password policy NotUsername breaks new user registration
2016-07-15 09:03:02 +02:00
Stian Thorgersen 970c89dd6a KEYCLOAK-3192 Ignore disabled required action 2016-07-15 09:01:44 +02:00
Stian Thorgersen f9bfb5d3e5 KEYCLOAK-3170 Users with only view-users and impersonate can't impersonate in the UI 2016-07-15 07:52:21 +02:00
Stian Thorgersen f384c2340e KEYCLOAK-3266 password policy NotUsername breaks new user registration 2016-07-15 07:34:13 +02:00
Stian Thorgersen 2f14fb7fb7 Merge pull request #3033 from rpieciorak/patch-1
Remove link to missing ReleaseProcess.md
2016-07-15 06:04:31 +02:00
Stian Thorgersen fe367d207a Merge pull request #3022 from vmuzikar/KEYCLOAK-3212
KEYCLOAK-3212 Improve Console UI tests stability in FF, Chrome and IE
2016-07-15 06:03:32 +02:00
mposolda 13a21e5fda KEYCLOAK-3220 Improve error handling on adapters 2016-07-14 23:56:46 +02:00
mposolda dcc4ea3aea KEYCLOAK-3237 Change OIDC adapters to use scope=openid as required per specs 2016-07-14 23:56:46 +02:00
Pedro Igor 7bc34c0ba4 Merge pull request #3034 from pedroigor/KEYCLOAK-3137
[KEYCLOAK-3137] - Review i18n for AuthZ Services
2016-07-14 15:22:41 -03:00
Pedro Igor aacf2e9390 [KEYCLOAK-3137] - Review i18n for AuthZ Services 2016-07-14 13:54:37 -03:00
Rafał Pięciorak 966a580895 Remove link to missing ReleaseProcess.md 2016-07-14 17:06:03 +02:00
Marek Posolda bffbc9e198 Merge pull request #3032 from mposolda/KEYCLOAK-3223
KEYCLOAK-3223 Basic support for acr claim
2016-07-14 16:26:36 +02:00
mposolda ee3ac3fdaf KEYCLOAK-3223 Basic support for acr claim 2016-07-14 12:36:12 +02:00
Stian Thorgersen 9ddec7d1eb Merge pull request #3019 from ssilvert/KEYCLOAK-3273-ear
KEYCLOAK-3273: Prefer module name for secure-deployment in Keycloak
2016-07-14 12:06:44 +02:00
Stian Thorgersen 4f1d83b9dc Merge pull request #3030 from stianst/KEYCLOAK-2824-2
KEYCLOAK-2824 Password Policy SPI
2016-07-14 10:12:25 +02:00
Marek Posolda eeabc0092b Merge pull request #3031 from mposolda/master
KEYCLOAK-3220 redirect to client with error if possible
2016-07-14 08:30:18 +02:00
Stian Thorgersen ea44b5888b KEYCLOAK-2824 Password Policy SPI 2016-07-14 07:20:30 +02:00
mposolda abde62f369 KEYCLOAK-3220 redirect to client with error if possible 2016-07-13 20:57:43 +02:00
Marek Posolda 16184d1e9d Merge pull request #3029 from mposolda/master
KEYCLOAK-3281 OIDC 'state' parameter is url-encoded twice when respon…
2016-07-13 19:16:35 +02:00
mposolda 38f89b93ff KEYCLOAK-3281 OIDC 'state' parameter is url-encoded twice when responseMode=form_post 2016-07-13 18:07:57 +02:00
Marek Posolda 912bc8464e Merge pull request #3028 from mposolda/KEYCLOAK-3219
KEYCLOAK-3219 Added claims info to OIDCWellKnownProvider. More tests
2016-07-13 12:28:29 +02:00
mposolda d5199501c7 KEYCLOAK-3219 Added claims info to OIDCWellKnownProvider. More tests 2016-07-13 10:17:45 +02:00
Stian Thorgersen f9235cb07d Merge pull request #3020 from realityforge/FilterSessionStore_getDateHeader
KEYCLOAK-3308: Return -1 from getDateHeader() when request is restored.
2016-07-13 08:38:53 +02:00
Stian Thorgersen d7649c2547 Merge pull request #3024 from stianst/KEYCLOAK-3267
KEYCLOAK-3267 Fix identity broker login with brute force enabled
2016-07-13 07:37:52 +02:00
Thomas Darimont be5468a7cf KEYCLOAK-3300 Add support for jetty in spring-boot-adapter
This adds support for using Jetty together with the Keycloak
spring-boot-adapter. Sadly the KeycloakSpringBootProperties.SecurityCollection
definition is mostly inspired by Tomcats SecurityConstraint/SecurityCollection
which doesn't provide a good fit for jettys structures.
In cases where jetty only allows one setting, we use the first value.

We only initialize KeycloakJettyServerCustomizer if jetty is used, same
applies for tomcat.
Revised configuration and extracted serverCustomizer code into
dedicated classes.
Prepared infrastructure for Undertow support.
2016-07-12 23:19:30 +02:00
Pedro Igor eba56e4784 Merge pull request #3027 from pedroigor/KEYCLOAK-3305
[KEYCLOAK-3305] - Cache is not properly handling failures when importing configuration
2016-07-12 17:57:47 -03:00
Marek Posolda 26efb2cbee Merge pull request #3026 from mposolda/master
KEYCLOAK-3306 Added reproducer test for OutdatedTopologyException
2016-07-12 21:47:01 +02:00
Pedro Igor 02896768f5 [KEYCLOAK-3305] - Cache is not properly handling failures when importing configuration 2016-07-12 13:57:49 -03:00
Stan Silvert 1d4e76117c KEYCLOAK-3273: Prefer module name for secure-deployment name. 2016-07-12 12:42:24 -04:00
mposolda a912ba3148 KEYCLOAK-3306 Added reproducer test for OutdatedTopologyException 2016-07-12 18:12:20 +02:00
Stian Thorgersen 5b0980172d KEYCLOAK-3267 Fix identity broker login with brute force enabled 2016-07-12 15:21:00 +02:00
Stian Thorgersen ff8dce77f3 Merge pull request #3021 from stianst/master
KEYCLOAK-3143 Wrong field name in login theme message properties
2016-07-12 13:57:40 +02:00
Vaclav Muzikar 7dbdb023a0 KEYCLOAK-3212 Improve Console UI tests stability in FF, Chrome and IE 2016-07-12 11:39:27 +02:00
Stian Thorgersen 2fa200889a KEYCLOAK-3143 Wrong field name in login theme message properties 2016-07-12 10:49:13 +02:00
Stian Thorgersen f97d0846ed Merge pull request #3010 from wadahiro/KEYCLOAK-3278
KEYCLOAK-3278 Add support for any encoding property file in theme
2016-07-12 10:34:34 +02:00
Stian Thorgersen 19e5ddeba5 Merge pull request #3015 from martin-kanis/master
KEYCLOAK-3096 Remove leading/trailing spaces from username/email
2016-07-12 10:03:55 +02:00
Stian Thorgersen df090fa5e1 Merge pull request #3012 from wadahiro/KEYCLOAK-3289
KEYCLOAK-3289 Fixed 'User Enabled' toggled incorrectly
2016-07-12 10:01:23 +02:00
Peter Donald c283f9803c Return -1 from getDateHeader() when request is restored.
Other certain container will attempt to access date (such as when
checking If-Modified-Since header)  and fail when accessing restored
request. The javax.servlet.http.HttpServletRequest#getDateHeader()
javadocs indicate that -1 should be returned when date is not available
2016-07-12 16:28:45 +10:00
Stian Thorgersen 3a370e2726 Merge pull request #3006 from vmuzikar/KEYCLOAK-3280-master
KEYCLOAK-3280 Alerts in Admin Console are sometimes shown only for a split second
2016-07-12 07:30:37 +02:00
Stan Silvert 73cbf857c1 KEYCLOAK-3273: Prefer module name for secure-deployment in Keycloak
adapter subsystem
2016-07-11 20:58:31 -04:00
Marek Posolda 64ad222a28 Merge pull request #3017 from mposolda/rhit
KEYCLOAK-3296 same user logging twice at the same time causes lock is…
2016-07-11 21:42:31 +02:00
mposolda 6e94931023 KEYCLOAK-3296 same user logging twice at the same time causes lock issue - HQL deletion patch 2016-07-11 19:40:24 +02:00
Marek Posolda ba3b6fd564 Merge pull request #3016 from mposolda/master
KEYCLOAK-3295 Kerberos authenticator changed during userFederationPro…
2016-07-11 17:15:48 +02:00
mposolda 039bb103c2 KEYCLOAK-3295 Kerberos authenticator changed during userFederationProvider update just if it was DISABLED 2016-07-11 15:52:49 +02:00
Stian Thorgersen e946c1c512 Merge pull request #3011 from stianst/KEYCLOAK-3202
Add versions for Jetty 9.3 adapter dists
2016-07-11 08:02:35 +02:00
Martin Kanis c67d834d39 KEYCLOAK-3096 Remove leading/trailing spaces from login 2016-07-09 18:35:51 +02:00
Marek Posolda 8bdfd57e9b Merge pull request #3014 from mposolda/KEYCLOAK-3222
OIDC client auth fixes & tests
2016-07-08 18:16:43 +02:00
mposolda 629390dd4a KEYCLOAK-2986 Require either expiration or issuedAt for client authentication with signed JWT 2016-07-08 16:16:38 +02:00
mposolda 3bfd999590 KEYCLOAK-3222 extend WellKnown to return supported types of client authentications. More tests 2016-07-08 15:39:13 +02:00
Pedro Igor 80a67149af Merge pull request #3002 from pedroigor/KEYCLOAK-3249
[KEYCLOAK-3249] - AuthorizationContext.hasScopePermission() gives NPE
2016-07-08 09:16:51 -03:00
Marek Posolda 7962f68991 Merge pull request #3013 from mposolda/KEYCLOAK-3221
OIDC fixes
2016-07-08 14:08:06 +02:00
mposolda c10a005997 KEYCLOAK-3290 UserInfoEndpoint error responses don't have correct statuses 2016-07-08 12:15:07 +02:00
mposolda 4dd28c0adf KEYCLOAK-3221 Tokens should be invalidated if an attempt to reuse code is made 2016-07-08 11:04:08 +02:00
Stian Thorgersen 4bdd67da79 Add versions for Jetty 9.3 adapter dists 2016-07-08 08:21:03 +02:00
Hiroyuki Wada 8e24c73ac8 KEYCLOAK-3289 Fixed 'User Enabled' toggled incorrectly when 'Federation Link' label is clicked 2016-07-08 15:09:58 +09:00
Bill Burke bd2887aa77 Merge pull request #2982 from ahus1/jetty_9_3
KEYCLOAK-2684: jetty 9.3 implementation (oidc/saml)
2016-07-07 14:59:29 -04:00
Bill Burke bdc57d57c1 Merge pull request #3008 from patriot1burke/master
new User Fed SPI initial iteration
2016-07-07 14:56:38 -04:00
Marek Posolda 38cc183be5 Merge pull request #3009 from mposolda/master
KEYCLOAK-3218 Support for max_age OIDC authRequest parameter and supp…
2016-07-07 20:01:50 +02:00
Hiroyuki Wada 930b0d9ad7 KEYCLOAK-3278 Add support for any encoding property file in theme 2016-07-08 02:58:48 +09:00
Bill Burke bf2ca4008e log level info 2016-07-07 12:06:57 -04:00
mposolda a7c9e71490 KEYCLOAK-3218 Support for max_age OIDC authRequest parameter and support for auth_time in IDToken 2016-07-07 17:04:32 +02:00
Bill Burke 0040d3fc3b Merge remote-tracking branch 'upstream/master' 2016-07-07 10:35:45 -04:00
Bill Burke 7e5a5f79cf fixes for new user fed spi 2016-07-07 10:35:35 -04:00
Marek Posolda 7a161cc8bb Merge pull request #3005 from mposolda/KEYCLOAK-3217
KEYCLOAK-3217 UserInfo endpoint wasn't accessible by POST request sec…
2016-07-07 13:49:43 +02:00
Marek Posolda c5e8a010dc Merge pull request #3004 from mposolda/KEYCLOAK-3147
KEYCLOAK-3147 Don't allow authRequest without redirect_uri parameter
2016-07-07 13:49:34 +02:00
Vaclav Muzikar 5638e9e1c5 KEYCLOAK-3280 Alerts in Admin Console are sometimes shown only for a split second 2016-07-07 13:44:28 +02:00
mposolda 56e09bf189 KEYCLOAK-3147 Don't allow authRequest without redirect_uri parameter 2016-07-07 12:46:36 +02:00
mposolda 7aafbcd5d9 KEYCLOAK-3217 UserInfo endpoint wasn't accessible by POST request secured with Bearer header 2016-07-07 12:28:25 +02:00
Stian Thorgersen 78fbf45b80 Merge pull request #2991 from ssilvert/RHSSO-296
KEYCLOAK-3244: Required Action "Configure Totp" should be "Configure OTP"
2016-07-07 11:43:50 +02:00
Horatiu Eugen Vlad bd124d5f9b Update server-spi module deps to include dependencies required by script based flow executor. 2016-07-06 18:00:46 +02:00
Pedro Igor 5ef65e837c [KEYCLOAK-3249] - AuthorizationContext.hasScopePermission() gives NPE 2016-07-06 09:39:56 -03:00
Stian Thorgersen 2591dd862b Merge pull request #2976 from vramik/KEYCLOAK-3151
KEYCLOAK-3151 removed adapter libs mode from testsuite
2016-07-06 14:21:07 +02:00
awpwb 159b371973 [KEYCLOAK-1733]: introduce token as query paramter
add functional tests for access token as query paramter
2016-07-06 14:12:23 +02:00
Stian Thorgersen 948f37b01a Merge pull request #2997 from pedroigor/KEYCLOAK-3246
[KEYCLOAK-3246] - Authz client missing from tomcat 8 OpenID adapter
2016-07-06 09:24:19 +02:00
Stian Thorgersen 1f41b3195f Merge pull request #3001 from stianst/KEYCLOAK-3202
KEYCLOAK-3202 Creating users causes memory leak
2016-07-06 09:22:40 +02:00
Stan Silvert 4628946a55 Automatically migrate required action name. 2016-07-05 15:07:54 -04:00
Stan Silvert a231c1b31b RHSSO-296: Required Action "Configure Totp" should be "Configure OTP" 2016-07-05 15:07:52 -04:00
Stian Thorgersen 3fc215d041 KEYCLOAK-3202 Creating users causes memory leak 2016-07-05 19:54:55 +02:00
Ton Swieb fed7339558 KEYCLOAK-3265 Support writing a NameIDType AttributeValue 2016-07-05 14:54:38 +02:00
Stian Thorgersen 7e0238d1c7 Merge pull request #2998 from stianst/KEYCLOAK-3262
KEYCLOAK-3262 Add support to save multiple state in keycloak.js
2016-07-05 09:48:28 +02:00
Stian Thorgersen 2dd0d7189e Merge pull request #2999 from stianst/KEYCLOAK-3189
KEYCLOAK-3189 KEYCLOAK-3190 Add kid and typ to JWT header
2016-07-05 09:33:21 +02:00
Stian Thorgersen f52504ac41 KEYCLOAK-3262 Add support to save multiple state in keycloak.js 2016-07-05 08:45:12 +02:00
Stian Thorgersen 7cfee80e58 KEYCLOAK-3189 KEYCLOAK-3190 Add kid and typ to JWT header 2016-07-05 08:26:26 +02:00
Stian Thorgersen 435cdb6180 Merge pull request #2994 from wadahiro/KEYCLOAK-3259
KEYCLOAK-3259 Specify UTF-8 encoding for freemarker template files
2016-07-04 19:25:03 +02:00
Stian Thorgersen fe856d3fa7 Merge pull request #2992 from ssilvert/RHSSO-274
KEYCLOAK-3243: "Undefined" as auth flow execution
2016-07-04 19:24:30 +02:00
Stian Thorgersen 98923d0ea4 Merge pull request #2971 from mhajas/fixRelative
KEYCLOAK-3195 Fix example adapter tests on relative scenario
2016-07-04 19:22:06 +02:00
Stian Thorgersen dd6434a487 Merge pull request #2995 from stianst/KEYCLOAK-2617
KEYCLOAK-2617 Ignore postmessages if not initiated by keycloak.js
2016-07-04 19:19:34 +02:00
Stian Thorgersen 842b811a41 Merge pull request #2987 from ssilvert/RHSSO-319
KEYCLOAK-3242: Some hints in admin console contain backslash in front of
2016-07-04 19:17:29 +02:00
Stian Thorgersen 07ab632351 Merge pull request #2986 from ssilvert/RHSSO-253
KEYCLOAK-3240: No tooltip shown for Client Mapper Type
2016-07-04 19:16:57 +02:00
Julien Giovaresco 9bcfda64fa Fix typo in email and login french translations 2016-07-04 19:14:36 +02:00
Stian Thorgersen 453859d14f Merge pull request #2993 from stianst/KEYCLOAK-2660
KEYCLOAK-2660 Test updating user without including username with brut…
2016-07-04 19:11:56 +02:00
Stian Thorgersen 122cb1f490 Merge pull request #2925 from chameleon82/issue/KEYCLOAK-3102-russian-localization
KEYCLOAK-3102 Add russian localization
2016-07-04 19:03:04 +02:00
Pedro Igor 6bb59b7f63 [KEYCLOAK-3246] - Authz client missing from tomcat 8 OpenID adapter 2016-07-04 13:27:14 -03:00
Pedro Igor 1ec88cf5b0 Merge pull request #2996 from pedroigor/KEYCLOAK-3248
[KEYCLOAK-3248] - Permissions don't unlink from resources and scopes
2016-07-04 13:16:44 -03:00
Pedro Igor 74139ec787 [KEYCLOAK-3248] - Permissions don't unlink from resources and scopes 2016-07-04 09:33:46 -03:00
Stian Thorgersen f3a780cc2d KEYCLOAK-2617 Ignore postmessages if not initiated by keycloak.js 2016-07-04 13:07:17 +02:00
Hiroyuki Wada 00cb0a798a KEYCLOAK-3259 Specify UTF-8 encoding for freemarker template files 2016-07-04 19:46:00 +09:00
Stian Thorgersen c9bbfc3b0b KEYCLOAK-2660 Test updating user without including username with brute force enabled 2016-07-04 12:37:26 +02:00
Alex cb085cc598 KEYCLOAK-3102 update Russian grammar in admin console 2016-07-02 10:04:57 +06:00
Alex a8b39edd73 KEYCLOAK-3102 Fix russian grammar in admin messages 2016-07-01 23:17:36 +06:00
Stan Silvert 8b8ebfc7e1 Fix failing test. 2016-07-01 12:24:13 -04:00
Stan Silvert d90a708ceb RHSSO-274: "Undefined" as auth flow execution 2016-07-01 10:25:14 -04:00
Stian Thorgersen 450b57c76a Merge pull request #2984 from stianst/master
KEYCLOAK-3172 Add view authorization role to existing realms
2016-07-01 12:41:09 +02:00
Stian Thorgersen fa312fb3db Merge pull request #2979 from cainj13/localeNpeFix
make locale retrieval null-safe
2016-07-01 12:33:36 +02:00
Alexander Schwartz 9384aa1398 KEYCLOAK-2684: jetty 9.3 implementation 2016-07-01 12:26:59 +02:00
Thomas Darimont ce7e7ef1d7 KEYCLOAK-3234 Allow restricting claim mapper for userinfo endpoint
Client mappers can now be configured to be limited to the
userinfo endpoint. This allows to keep access-tokens lean
while providing extended user information on demand via the
userinfo endpoint.
2016-07-01 11:35:19 +02:00
Bill Burke a19469aba5 Merge remote-tracking branch 'upstream/master' 2016-06-30 17:18:17 -04:00
Bill Burke b224917fc5 bump version 2016-06-30 17:17:53 -04:00
Bill Burke 3f1eecc4be Merge remote-tracking branch 'upstream/master' 2016-06-30 16:47:55 -04:00
Bill Burke 3ba3be877e fixes 2016-06-30 16:47:49 -04:00
Stan Silvert daefbcf994 RHSSO-319: Some hints in admin console contain backslash in front of
collon
2016-06-30 13:32:21 -04:00
Stan Silvert 5d9669e5a6 RHSSO-253: No tooltip shown for Client Mapper Type 2016-06-30 13:10:47 -04:00
Pedro Igor 1e7745b5c3 Merge pull request #2978 from pedroigor/authz-tests
[Authorization] - Integration tests
2016-06-30 13:32:28 -03:00
Pedro Igor 46d02f15fe [KEYCLOAK-2999] - Authorization arquillian tests 2016-06-30 10:26:05 -03:00
Pedro Igor 01f3dddd91 Adding a column to list policies associated with a permission. 2016-06-30 10:26:05 -03:00
Pedro Igor 2db41ef052 [KEYCLOAK-2999] - Changes to authz examples for integration test 2016-06-30 10:26:05 -03:00
Pedro Igor afa9471c7c [KEYCLOAK-3128] - Admin Client Authorization Endpoints 2016-06-30 10:26:05 -03:00
Stian Thorgersen 08f28de903 Removed release process doc as it's now in a private document 2016-06-30 09:46:46 +02:00
Stian Thorgersen 1fe8da67dc KEYCLOAK-3172 Add view authorization role to existing realms 2016-06-30 08:52:18 +02:00
Stian Thorgersen 591a794247 Merge pull request #2983 from stianst/master
Update messages_fr.properties
2016-06-30 07:34:30 +02:00
Alexandre a9e8f315a4 Update messages_fr.properties
Change the word "adminitrateur" to "administrateur"

The "s" was missing in "admini-S-trateur"

That all !
2016-06-30 07:34:17 +02:00
Stian Thorgersen c738f9fbd3 Merge pull request #2981 from pedroigor/KEYCLOAK-3172
[KEYCLOAK-3172] - Migrating older versions with authorization services.
2016-06-30 07:31:39 +02:00
Stian Thorgersen 588f6ba253 Merge pull request #2965 from mhajas/fixSSLTrustore
KEYCLOAK-3174 Fix duplicate plugin for adding truststore
2016-06-30 07:29:09 +02:00
Bill Burke a9f6948d74 Merge remote-tracking branch 'upstream/master' 2016-06-29 15:37:32 -04:00
Bill Burke f51098c50b user fed refactor 2016-06-29 15:37:22 -04:00
Pedro Igor 8b0bf503c3 [KEYCLOAK-3172] - Migrating older versions with authorization services. 2016-06-29 12:07:49 -03:00
Josh Cain ec402f759b make locale retrieval null-safe 2016-06-28 13:25:48 -05:00
Marek Posolda bc82f18acb Merge pull request #2974 from mposolda/master
KEYCLOAK-3194 Fix fuse adapter. Remove karaf related steps from README
2016-06-27 22:17:31 +02:00
Stian Thorgersen a001d53d2a Merge pull request #2972 from iperdomo/master
[KEYCLOAK-3185] Fix navigation resource > permission
2016-06-27 16:20:25 +02:00
mposolda 1a4d03e283 KEYCLOAK-3194 Fix fuse adapter. Remove karaf related steps from README 2016-06-27 15:43:23 +02:00
Iván Perdomo 8a8bf47043 [KEYCLOAK-3185] Fix navigation resource > permission 2016-06-27 14:21:19 +02:00
mhajas 836ab2820a Fix adapter tests on relative scenario 2016-06-27 14:18:32 +02:00
Alex 01d0821142 KEYCLOAK-3102 Fix grammar 2016-06-25 13:30:22 +06:00
Vlasta Ramik 47fab2d034 removed adapter libs mode from testsuite 2016-06-24 13:32:03 +02:00
Stian Thorgersen fc295ac2ac Merge pull request #2964 from stianst/master
Remove testsuite/stress
2016-06-24 13:04:52 +02:00
mhajas 69919902b4 Fix duplicate plugin for adding truststore 2016-06-24 12:50:39 +02:00
Stian Thorgersen a6af72cbbc Removed perf package from testsuite/integration 2016-06-24 10:59:05 +02:00
Stian Thorgersen 4aa102fcab Remove testsuite/stress 2016-06-24 10:59:05 +02:00
Stian Thorgersen 0dc8bb7c3b Merge pull request #2963 from ssilvert/migrate-importexport
KEYCLOAK-3031 Migrate exportimport package to arquillian testsuite
2016-06-24 10:44:46 +02:00
Stan Silvert 5e450d5cd4 Minor cleanup. 2016-06-23 11:09:57 -04:00
Stan Silvert 38722e8273 KEYCLOAK-3031 Migrate exportimport package to arquillian testsuite 2016-06-23 11:09:55 -04:00
Stian Thorgersen ce17999d26 Merge pull request #2962 from stianst/master
Add retry to testPostEncryptedLoginLogout
2016-06-23 15:48:43 +02:00
Stian Thorgersen d869ab2823 Add retry to testPostEncryptedLoginLogout 2016-06-23 15:48:18 +02:00
Marek Posolda 5dc6f2f835 Merge pull request #2961 from mposolda/master
Fix Oracle DB
2016-06-23 14:58:28 +02:00
mposolda 9b9a656192 Fix Oracle DB 2016-06-23 13:23:44 +02:00
Marek Posolda 7e985dce85 Merge pull request #2960 from mposolda/master
Fix DB2 and MSSQL
2016-06-23 12:57:09 +02:00
Stian Thorgersen 184108c5ff Merge pull request #2959 from stianst/master
Remove old performance testsuite
2016-06-23 12:21:27 +02:00
mposolda f6ce1438fd Fix DB2 and MSSQL 2016-06-23 11:01:30 +02:00
Stian Thorgersen 1b9fe8edf7 Remove old performance testsuite 2016-06-23 10:59:02 +02:00
Marek Posolda e205535c55 Merge pull request #2958 from mposolda/master
Fix ResourceManagementTest.testFindById to pass with other RDBMS besi…
2016-06-23 10:57:40 +02:00
mposolda 5c25619cd6 Fix ResourceManagementTest.testFindById to pass with other RDBMS besides H2 2016-06-23 09:42:59 +02:00
Stian Thorgersen 2e2f34d94e Merge pull request #2957 from pedroigor/authz-changes
Changes to authz examples and some minor improvements
2016-06-23 07:49:47 +02:00
Pedro Igor 7eab4bc859 Updating example's README. 2016-06-23 01:02:39 -03:00
Pedro Igor 074a312fe5 Renaming authorization attributes. 2016-06-22 17:20:50 -03:00
Pedro Igor 7512abe9a7 Renaming Scopes tab to Authorization Scopes 2016-06-22 16:58:09 -03:00
Pedro Igor f48288865b [KEYCLOAK-3156] - Missing CORS when responding with denies 2016-06-22 14:39:07 -03:00
Pedro Igor 333bdb62dd [KEYCLOAK-3155] - Minor improvements to servlet-authz-app example 2016-06-22 14:36:43 -03:00
Pedro Igor 07824bdc4d [KEYCLOAK-3154] - Rename Photoz modules and directories to remove UMA identifier 2016-06-22 14:33:29 -03:00
Pedro Igor 905421a292 [KEYCLOAK-3152] - Keycloak Authorization JS Adapter 2016-06-22 14:28:02 -03:00
Marek Posolda 363e948141 Merge pull request #2956 from mposolda/master
KEYCLOAK-3141 Fix DB2 and some other DB issues
2016-06-22 19:25:15 +02:00
mposolda f7a2ad021e KEYCLOAK-3141 Fix DB2 and some other DB issues 2016-06-22 17:06:55 +02:00
Stian Thorgersen e2082ce29f Merge pull request #2950 from vramik/KEYCLOAK-3140
KEYCLOAK-3140 - fixed HTTP 404 Not Found by removing duplicate declaration of plugins in auth-server-jboss
2016-06-22 15:12:01 +02:00
Stian Thorgersen 462843cc9c Merge pull request #2955 from abstractj/readme-update
Update readme file with correct title
2016-06-22 15:11:50 +02:00
Stian Thorgersen 5890f7cae1 Merge pull request #2954 from stianst/master
KEYCLOAK-3093 Remove documentation from main repository
2016-06-22 15:11:38 +02:00
Bruno Oliveira 767c832f24 Update readme file with correct title 2016-06-22 09:48:59 -03:00
Bill Burke 6e4abe19f3 Merge pull request #2936 from tonswieb/master
KEYCLOAK-3100 Rearrange SingleLogoutService and NameIDFormat
2016-06-22 08:48:20 -04:00
Stian Thorgersen 107830bd2c KEYCLOAK-3093 Remove documentation from main repository 2016-06-22 13:40:21 +02:00
Marek Posolda 90d0ee7934 Merge pull request #2952 from mposolda/master
KEYCLOAK-3149 DB update triggered before DBLock was acquired
2016-06-21 18:28:50 +02:00
mposolda 5c731b4d14 KEYCLOAK-3149 DB update triggered before DBLock is retrieved 2016-06-21 17:14:25 +02:00
Pedro Igor 8402cedd82 Merge pull request #2946 from pedroigor/KEYCLOAK-3130
[KEYCLOAK-3130] - Permission checks to authorization admin endpoints
2016-06-21 10:50:29 -03:00
Marek Posolda 190a1beefa Merge pull request #2951 from mposolda/KEYCLOAK-2474
KEYCLOAK-2474 Possibility to add custom SPI and extend the data model
2016-06-21 15:31:12 +02:00
Pedro Igor 0a7504f9a8 Merge pull request #2945 from pedroigor/KEYCLOAK-3132
Changes to authz modules and dependencies
2016-06-21 10:12:54 -03:00
mposolda da945a69e6 KEYCLOAK-2474 Added test 2016-06-21 13:47:41 +02:00
mposolda c4513fdad9 KEYCLOAK-2474 Polishing. Support for separate changelock table per changelog. Support for authenticated endpoint in domain-extension example 2016-06-21 12:06:22 +02:00
Vlasta Ramik 48bd019165 fixed duplicate declaration of plugins in auth-server-jboss 2016-06-21 11:21:52 +02:00
Alex 61be5cc90e KEYCLOAK-3102 Fix Russian translation more cleaner 2016-06-21 01:16:05 +06:00
Pedro Igor 5f91f4e466 [KEYCLOAK-3062] - Async configuration to KeycloakServer 2016-06-20 11:55:17 -03:00
Pedro Igor d5167c1632 [KEYCLOAK-3134] - Remove 'org.keycloak.keycloak-authz-server' module 2016-06-20 11:54:32 -03:00
Erik Mulder 44d7d776bc KEYCLOAK-2474: Added Example project for Domain Extension (WIP) 2016-06-20 11:29:14 +02:00
Erik Mulder f4ead484de KEYCLOAK-2474 Possibility to add custom SPI and extend the data model 2016-06-20 10:56:33 +02:00
Pedro Igor 6a1fb8f870 [KEYCLOAK-3132] - Single module for common policy providers 2016-06-17 20:38:03 -03:00
Pedro Igor dd279dd0fd [KEYCLOAK-3130] - Permission checks to authorization admin endpoints 2016-06-17 15:27:42 -03:00
Stian Thorgersen 111bcb7433 Merge pull request #2942 from stianst/master
Refactor authz changelog in to separate authz-master.xml
2016-06-17 15:26:43 +02:00
Stian Thorgersen 8f3cfed7c5 Merge pull request #2934 from fkiss/master-truststore
KEYCLOAK-2283 added email truststore test
2016-06-17 14:05:38 +02:00
Stian Thorgersen 807fc71626 Merge pull request #2939 from mhajas/fixEAP6
KEYCLOAK-3125 Fix ssl tests on EAP6
2016-06-17 14:02:23 +02:00
Stian Thorgersen 8ae08f0432 Merge pull request #2938 from mhajas/addJSConsoleTests-master
KEYCLOAK-3121 Add JS adapter tests
2016-06-17 14:01:21 +02:00
Stian Thorgersen 2beb1f2466 Merge branch 'KEYCLOAK-3052' of https://github.com/cargosoft/keycloak into cargosoft-KEYCLOAK-3052 2016-06-17 13:55:55 +02:00
Stian Thorgersen 1a9fada964 KEYCLOAK-2753 Refactor authz changelog into separate authz-master.xml 2016-06-17 13:40:22 +02:00
Stian Thorgersen 9030edc04d KEYCLOAK-2753 Removed unused imports from PolicyAdapter 2016-06-17 13:40:22 +02:00
Stian Thorgersen 3c0f7e2ee2 Merge pull request #2617 from pedroigor/KEYCLOAK-2753
[KEYCLOAK-2753] - Fine-grained Authorization Services
2016-06-17 13:40:15 +02:00
Pedro Igor 086c29112a [KEYCLOAK-2753] - Fine-grained Authorization Services 2016-06-17 02:07:34 -03:00
mhajas 0df2525298 Fix ssl tests on EAP6 2016-06-16 11:56:31 +02:00
mhajas cdb40fce19 Add JS adapter tests 2016-06-16 11:43:06 +02:00
Ton Swieb af5ac7dd6b KEYCLOAK-3100 Rearrange SingleLogoutService and NameIDFormat 2016-06-15 21:16:34 +02:00
Dimitri Teleguin 524ad9728a correct resource URL 2016-06-14 21:07:36 +03:00
fkiss b50513a946 KEYCLOAK-2283 added email truststore test 2016-06-14 13:49:16 +02:00
Dmitry Telegin 3203842b58 Fix KEYCLOAK-3052 2016-06-14 12:32:43 +03:00
Stian Thorgersen 2d036b58a6 Merge pull request #2932 from stianst/master
KEYCLOAK-3050 - fix npe on deployment
2016-06-13 21:16:04 +02:00
Michaël van de Giessen 55910f5f70 KEYCLOAK-3050 - fix npe on deployment 2016-06-13 20:15:41 +02:00
Stian Thorgersen c1e202eaf9 Merge pull request #2931 from stianst/master
KEYCLOAK-3091 Change brute force to use userId
2016-06-13 18:02:32 +02:00
Stian Thorgersen e538394e60 KEYCLOAK-3091 Change brute force to use userId 2016-06-13 15:30:13 +02:00
Stian Thorgersen 46b17e6149 Merge pull request #2928 from mposolda/KEYCLOAK-3106
KEYCLOAK-3106 EventStoreProviderTest.query is failing in some environ…
2016-06-13 15:05:19 +02:00
mposolda e6b3586b87 KEYCLOAK-3106 EventStoreProviderTest.query is failing in some environments 2016-06-13 15:02:10 +02:00
Stian Thorgersen bdaba4c85a Merge pull request #2926 from mposolda/master
KEYCLOAK-3105 Can't access single realm with the admin user from mast…
2016-06-13 14:50:19 +02:00
mposolda 1510ac5eb4 KEYCLOAK-3105 Can't access single realm with the admin user from master realm 2016-06-13 12:09:11 +02:00
Некрасов Александр Сергеевич 1422d2962e KEYCLOAK-3102 Add russian localization 2016-06-10 15:54:19 +06:00
Marek Posolda 443772d5ec Merge pull request #2924 from mposolda/master
KEYCLOAK-2028: Add preemptive access token refresh support to servlet adapters
2016-06-09 21:51:15 +02:00
mposolda 72736e5e47 KEYCLOAK-2028 Add test for token-minimum-time-to-live adapter option 2016-06-09 19:22:15 +02:00
Ben Loy ec180db39f KEYCLOAK-2028: Add preemptive access token refresh support
Add a new keycloak.json property and mechanism to automatically
refresh access tokens if they are going to expire in less than a configurable
amount of time.
2016-06-09 19:22:15 +02:00
Marek Posolda f6d075fbe4 Merge pull request #2922 from mposolda/master
KEYCLOAK-2714 Remove the pre-liquibase workarounds
2016-06-08 15:54:36 +02:00
mposolda 5fc5bafbb6 KEYCLOAK-2714 Remove the pre-liquibase workarounds 2016-06-08 14:40:33 +02:00
Stian Thorgersen a189545f81 Merge pull request #2920 from thomasdarimont/issue/KEYCLOAK-3092-Increase-number-of-users-shown-in-UserListing
KEYCLOAK-3092: Show 25 users per page in user list by default
2016-06-08 13:21:13 +02:00
Stian Thorgersen 1c694b4795 Merge pull request #2921 from thomasdarimont/issue/KEYCLOAK-3054-fix-npe-on-unknown-protocol-adjustment
KEYCLOAK-3054: Use string format for log message
2016-06-08 07:08:05 +02:00
Stian Thorgersen 819c42dad2 Merge pull request #2918 from chameleon82/issue/KEYCLOAK-3089-email-subject-internationalization
KEYCLOAK-3089 Change email subject encoding to utf-8/base64
2016-06-08 07:07:37 +02:00
Некрасов Александр Сергеевич 7bdccc21b2 KEYCLOAK-3089 Change email subject encoding to utf-8 2016-06-08 09:10:39 +06:00
Thomas Darimont a9f461bfd1 KEYCLOAK-3054: Use string format for log message
Need to use log.debugf(..) to correctly resolve the %s placeholder.
2016-06-07 21:56:04 +02:00
Thomas Darimont 56a565f913 KEYCLOAK-3092: Show 20 users per page in user list by default
More sensible default for number of users shown per page in
the user listing of the admin console.
This is also recommended in the patternfly guidelines.

Prior to the PR only 5 users were shown per page.
2016-06-07 13:23:03 +02:00
Stian Thorgersen b6a76b1267 Merge pull request #2917 from thomasdarimont/issue/KEYCLOAK-3054-fix-npe-on-unknown-protocol
KEYCLOAK-3054: Fix potential NPE in RealmsResource
2016-06-07 13:09:54 +02:00
Thomas Darimont 67a63a806e KEYCLOAK-3054: Fix potential NPE in RealmsResource
Prior to PR .well-known Endpoint threw NPE with if unknown
Protocol was provided.
2016-06-07 08:29:23 +02:00
Stian Thorgersen 816b01860b Merge pull request #2912 from thomasdarimont/issue/KEYCLOAK-2891-fix-openidc-endpoint-label-alignment
KEYCLOAK-2891: Fix label alignment for OIDC Endpoint link.
2016-06-07 07:07:17 +02:00
Stian Thorgersen ce2f009e76 Merge pull request #2915 from pdrozd/KEYCLOAK-3082
KEYCLOAK-3082 - clear queue before event
2016-06-07 07:00:42 +02:00
Stian Thorgersen d5a44db2de Merge pull request #2914 from pdrozd/master
KEYCLOAK-3085 - Add module org.jboss.resteasy.resteasy-jaxrs to integ…
2016-06-07 07:00:11 +02:00
Некрасов Александр Сергеевич 5474496867 KEYCLOAK-3089 Change email subject encoding to utf-8/base64 2016-06-07 09:11:46 +06:00
Pavel Drozd 54d9943a3b KEYCLOAK-3085 - Add module org.jboss.resteasy.resteasy-jaxrs to integration-arquillian-testsuite-providers 2016-06-06 11:51:20 +02:00
Pavel Drozd 81de73df8e KEYCLOAK-3082 - clear queue before event 2016-06-06 11:46:39 +02:00
Thomas Darimont 51312ff7ff KEYCLOAK-2891: Fix label alignment for OIDC Endpoint link.
This probably happend during merge.
2016-06-06 09:55:31 +02:00
Bill Burke b2d8c6bca2 Merge pull request #2418 from schmeedy/master
Fix k_query_bearer_token endpoint in proxy
2016-06-05 11:20:08 -04:00
Bill Burke 4c9a0b45d4 Merge pull request #2229 from thomasdarimont/issue/KEYCLOAK-2489-script-based-authenticator-definitions
KEYCLOAK-2489 - Add support for Script-based AuthenticationExecution definitions.
2016-06-05 11:12:05 -04:00
Bill Burke b3f3449e39 Merge pull request #2810 from thomasdarimont/issue/KEYCLOAK-2974-handle-ModelException-in-UsersResource
KEYCLOAK-2974: Handle ModelException in UsersResource
2016-06-05 11:06:32 -04:00
Bill Burke a76a4730e3 Merge pull request #2884 from thomasdarimont/issue/KEYCLOAK-2891-link-to-oidc-endpoints-from-admin-console
KEYCLOAK-2891: Add link to OpenID Endpoint Configuration to realm details page.
2016-06-05 11:06:11 -04:00
Bill Burke dbeb3353f8 Merge pull request #2911 from thomasdarimont/issue/KEYCLOAK-3081-oidc-support-user-role-mapper
KEYCLOAK-3081: Add client mappers to map user roles to token
2016-06-05 11:03:47 -04:00
Thomas Darimont a2d1c8313d KEYCLOAK-3081: Add client mapper to map user roles to token
Introduced two new client protocol mappers to propagate assigned user client / realm roles to a JWT ID/Access Token.
Each protocol mapper supports to use a prefix string that is prepended to each role name.

 The client role protocol mapper can specify from which client the roles should be considered.
 Composite Roles are resolved recursively.

Background:
Some OpenID Connect integrations like mod_auth_openidc don't support analyzing deeply nested or encoded structures.
In those scenarios it is helpful to be able to define custom client protocol mappers that allow to propagate a users's roles as a flat structure
(e.g. comma separated list) as a top-level  (ID/Access) Token attribute that can easily be matched with a regex.

In order to differentiate between client specific roles and realm roles it is possible to configure
both separately to be able to use the same role names with different contexts rendered as separate token attributes.
2016-06-03 15:52:58 +02:00
Marek Posolda 193233899f Merge pull request #2910 from mposolda/master
KEYCLOAK-3074 AdminEventStoreProviderTest fixes
2016-06-03 11:33:22 +02:00
mposolda c42b8f81e3 KEYCLOAK-3074 Change the TestingResourceProvider to always both firstResults and maxResults in JPA criteria query 2016-06-03 10:31:32 +02:00
mposolda 13bf36ce49 KEYCLOAK-3074 Change the signature of TestingResourceProvider.getAdminEvents to use String instead of java.util.Date 2016-06-03 10:31:24 +02:00
Stian Thorgersen 31eee347d4 Merge pull request #2895 from mhajas/fixMissingPOM
KEYCLOAK-3051 Fix missing version in POM
2016-06-02 18:55:03 +02:00
Stian Thorgersen c37f1c24ee Merge pull request #2900 from tkyjovsk/performance-tests
Updates to the performance tests.
2016-06-02 18:54:47 +02:00
Stian Thorgersen fba78f3e2a Merge pull request #2908 from mstruk/KEYCLOAK-2879-a
KEYCLOAK-2879 UserResource
2016-06-02 18:53:53 +02:00
Marko Strukelj ec258c6515 KEYCLOAK-2879 UserResource 2016-06-02 15:23:18 +02:00
Stian Thorgersen 087f84bfff Merge pull request #2901 from mposolda/master
KEYCLOAK-3065 Remove 'provider' from realmCache in keycloak-server.js…
2016-06-02 14:58:16 +02:00
Stian Thorgersen 733a51b1ea Merge pull request #2903 from pedroigor/KEYCLOAK-3068
[KEYCLOAK-3068] - Setting XInclude to false
2016-06-02 07:59:17 +02:00
Stian Thorgersen 4141690857 Merge pull request #2905 from pedroigor/KEYCLOAK-3069
[KEYCLOAK-3069] - Adding back javax.xml.soap.api dependency
2016-06-02 07:58:35 +02:00
Pedro Igor 0ad86b3a53 [KEYCLOAK-3069] - Adding javax.xml.soap.api dependency 2016-06-01 16:57:06 -03:00
Pedro Igor a39907de76 [KEYCLOAK-3068] - Setting XInclude to false 2016-06-01 16:43:02 -03:00
mposolda fd2fc34386 KEYCLOAK-3065 Remove 'provider' from realmCache in keycloak-server.json to have 'enabled' switch working 2016-06-01 17:25:51 +02:00
Stian Thorgersen 93d3a0eb38 Merge pull request #2898 from stianst/master
KEYCLOAK-3066
2016-06-01 16:30:06 +02:00
Tomas Kyjovsky ef95510da4 Updates to the performance tests.
Conflicts:
	testsuite/integration-arquillian/tests/other/adapters/jboss/remote/pom.xml
	testsuite/integration-arquillian/tests/other/clean-start/pom.xml
2016-06-01 16:06:51 +02:00
Stian Thorgersen 8fab2f0718 KEYCLOAK-3066
Uploaded Realm Certificate is not validated
2016-06-01 15:12:21 +02:00
mhajas 6da8ca70dc Fix missing version in POM 2016-05-27 12:09:20 +02:00
Stian Thorgersen 2343e517c9 Merge pull request #2891 from pedroigor/KEYCLOAK-2894
[KEYCLOAK-2894] - Fixing saml signature validation
2016-05-26 16:57:13 +02:00
Pedro Igor 60f954a497 [KEYCLOAK-2894] - Fixing saml signature validation 2016-05-26 10:48:30 -03:00
Stian Thorgersen af30142097 Merge pull request #2886 from ssilvert/migrate-events
KEYCLOAK-2912 Migrate events package to new testsuite
2016-05-26 15:01:57 +02:00
Stian Thorgersen c5e287b7b1 Merge pull request #2885 from fernandomora/fix-base-theme-login
KEYCLOAK-3045 Fixes displaying message on login using base theme
2016-05-26 08:40:06 +02:00
Stian Thorgersen c206ae13db Merge pull request #2889 from mposolda/master
Admin events fixes and more tests
2016-05-26 08:29:51 +02:00
mposolda 882dbc3f25 KEYCLOAK-3006 Fix admin event inconsistencies related to roles (points 1,3,4,15,16 from JIRA) 2016-05-25 23:18:01 +02:00
mposolda 022be3aee5 KEYCLOAK-3006 Fix admin event inconsistencies (points 2,5-14 from JIRA) 2016-05-25 23:17:47 +02:00
Thomas Darimont 5f73c338d8 KEYCLOAK-2947: Include group representation for GroupMembership changes in AdminEvents
We now include the full group representation in AdminEvents
for Group Membership changes.
This enables EventListener to propagate potential role / attribute
chnages based on the removal / addition of the group.
2016-05-25 23:17:35 +02:00
mposolda f58936025f KEYCLOAK-3003 Support for admin events in AuthenticationManagementResource 2016-05-25 23:17:24 +02:00
Stan Silvert 1042a22cf7 KEYCLOAK-2912 Migrate events package to new testsuite 2016-05-25 15:22:17 -04:00
Fernando Mora 5148e69006 Fixes displaying message on login using base theme
Using base theme produces an error when login page tries to display a message.
The following properties that are not defined in base theme (only in keycloak theme) are being called without default_value operator "!"

* Steps to Reproduce:
1. Set `base` theme as `Login Theme`
2. Sign out
3. Try to sign in using and invalid username/password

* Expected behaviour:
  * Message `Invalid username or password.`is shown
* Actual behavior:
  * Bank page is shown and following stackatrace in logs:
```
15:58:19,575 ERROR [freemarker.runtime] (default task-9) Error executing FreeMarker template: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> properties.kcFeedbackErrorIcon  [in template "template.ftl" at line 67, column 76]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${properties.kcFeedbackErrorIcon}  [in template "template.ftl" in macro "registrationLayout" at line 67, column 74]
	- Reached through: @layout.registrationLayout displayInf...  [in template "login.ftl" at line 2, column 1]
----
	at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:131)
	at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:355)
	at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
	at freemarker.core.DollarVariable.accept(DollarVariable.java:41)
	at freemarker.core.Environment.visit(Environment.java:324)
	at freemarker.core.MixedContent.accept(MixedContent.java:54)
	at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
	at freemarker.core.Environment.visit(Environment.java:324)
	at freemarker.core.MixedContent.accept(MixedContent.java:54)
	at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
	at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
	at freemarker.core.Environment.visit(Environment.java:324)
	at freemarker.core.MixedContent.accept(MixedContent.java:54)
	at freemarker.core.Environment.visit(Environment.java:324)
	at freemarker.core.Macro$Context.runMacro(Macro.java:184)
	at freemarker.core.Environment.invoke(Environment.java:701)
	at freemarker.core.UnifiedCall.accept(UnifiedCall.java:84)
	at freemarker.core.Environment.visit(Environment.java:324)
	at freemarker.core.MixedContent.accept(MixedContent.java:54)
	at freemarker.core.Environment.visit(Environment.java:324)
	at freemarker.core.Environment.process(Environment.java:302)
	at freemarker.template.Template.process(Template.java:325)
	at org.keycloak.theme.FreeMarkerUtil.processTemplate(FreeMarkerUtil.java:61)
	at org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createResponse(FreeMarkerLoginFormsProvider.java:314)
	at org.keycloak.forms.login.freemarker.FreeMarkerLoginFormsProvider.createLogin(FreeMarkerLoginFormsProvider.java:431)
	at org.keycloak.authentication.authenticators.browser.AbstractUsernameFormAuthenticator.invalidUser(AbstractUsernameFormAuthenticator.java:58)
	at org.keycloak.authentication.authenticators.browser.AbstractUsernameFormAuthenticator.invalidUser(AbstractUsernameFormAuthenticator.java:87)
	at org.keycloak.authentication.authenticators.browser.AbstractUsernameFormAuthenticator.validateUserAndPassword(AbstractUsernameFormAuthenticator.java:141)
	at org.keycloak.authentication.authenticators.browser.UsernamePasswordForm.validateForm(UsernamePasswordForm.java:56)
	at org.keycloak.authentication.authenticators.browser.UsernamePasswordForm.action(UsernamePasswordForm.java:49)
	at org.keycloak.authentication.DefaultAuthenticationFlow.processAction(DefaultAuthenticationFlow.java:84)
	at org.keycloak.authentication.DefaultAuthenticationFlow.processAction(DefaultAuthenticationFlow.java:75)
	at org.keycloak.authentication.AuthenticationProcessor.authenticationAction(AuthenticationProcessor.java:756)
	at org.keycloak.services.resources.LoginActionsService.processFlow(LoginActionsService.java:359)
	at org.keycloak.services.resources.LoginActionsService.processAuthentication(LoginActionsService.java:341)
	at org.keycloak.services.resources.LoginActionsService.authenticateForm(LoginActionsService.java:386)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)
	at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:138)
	at org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:101)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:395)
	at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:202)
	at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
	at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
	at org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:88)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
```
2016-05-25 18:38:11 +02:00
Thomas Darimont 08320890b1 KEYCLOAK-2891: Add link to OpenID Endpoint Configuration to realm details page
We now show a link to the OIDC Endpoints configuration in the realm
details page.
This makes it easier for users to find the OIDC endpoints.
2016-05-25 14:26:44 +02:00
Stian Thorgersen 5ed09acd94 Merge pull request #2881 from stianst/KEYCLOAK-3034
KEYCLOAK-3034 NullPointerException when log in via Twitter
2016-05-25 13:44:05 +02:00
Stian Thorgersen 4728729302 Merge pull request #2882 from stianst/master
KEYCLOAK-3029
2016-05-25 08:56:25 +02:00
Stian Thorgersen d016ea4116 KEYCLOAK-3029 2016-05-25 08:55:45 +02:00
Stian Thorgersen fa3a2aafec KEYCLOAK-3034 NullPointerException when log in via Twitter 2016-05-25 08:10:55 +02:00
Stian Thorgersen d85f9cb4e2 Merge pull request #2858 from thomasdarimont/issue/KEYCLOAK-3021-add-realm-display-name-to-otpauth-uri-label
KEYCLOAK-3021: Add Realm Display Name to the label part of the otpauth URI
2016-05-25 07:29:14 +02:00
Stian Thorgersen 9edec8e4a6 Merge pull request #2875 from abstractj/KEYCLOAK-3023
OAuthRedirectUriTest.testLocalhost fails on wildfly
2016-05-25 07:25:22 +02:00
Stian Thorgersen f12c54387c Merge pull request #2873 from vramik/KEYCLOAK-3024
KEYCLOAK-3024 support for smoke test - clean start domain mode
2016-05-25 07:24:14 +02:00
Stian Thorgersen d51a2cde2f Merge pull request #2859 from ssilvert/migrate-i18n
KEYCLOAK-2913 Migrate i18n package to new testsuite
2016-05-25 07:22:54 +02:00
Stian Thorgersen 39d2c3ad81 Merge pull request #2878 from stianst/master
KEYCLOAK-3020 Fix migration docs
2016-05-25 06:51:26 +02:00
Stian Thorgersen 6ee11a94b4 KEYCLOAK-3020 Fix migration docs 2016-05-25 06:50:52 +02:00
Bruno Oliveira b2850ec1d5 OAuthRedirectUriTest.testLocalhost fails on wildfly 2016-05-24 07:24:36 -03:00
Stan Silvert 8d56ab90ba KEYCLOAK-2913 Switch to use xpath for finding links instead of adding an
id.
2016-05-23 09:23:01 -04:00
Stian Thorgersen 3e4f5f40dc Merge pull request #2871 from stianst/KEYCLOAK-3008
KEYCLOAK-3008 Upload Realm Keys doesn't work
2016-05-23 14:01:22 +02:00
Stian Thorgersen 097c49149c Merge pull request #2867 from stianst/KEYCLOAK-3020
KEYCLOAK-3020
2016-05-23 13:59:13 +02:00
Vlasta Ramik a37d43714d support for smoke test - clean start domain mode 2016-05-23 13:29:05 +02:00
Stian Thorgersen ff20c530cd Merge pull request #2869 from stianst/KEYCLOAK-2851
KEYCLOAK-2851 InitialAccessTokenTest#createExpired fails occasionally
2016-05-23 12:04:23 +02:00
Stian Thorgersen e0ae98eb95 Merge pull request #2850 from wyvie/samltest
KEYCLOAK-3000: fixed the saml brokering tests
2016-05-23 11:23:27 +02:00
Stian Thorgersen 477c0872b0 KEYCLOAK-3020
Increase default password hashing intervals to 20K
2016-05-23 11:20:31 +02:00
Stian Thorgersen 27bdc996e7 KEYCLOAK-3008 Upload Realm Keys doesn't work 2016-05-23 10:35:23 +02:00
Stian Thorgersen e52f7c56a9 KEYCLOAK-2851 InitialAccessTokenTest#createExpired fails occasionally 2016-05-23 09:34:33 +02:00
Stian Thorgersen 74809b4132 Merge pull request #2864 from mhajas/fixOfflineServlets
KEYCLOAK-3025 Fix offline servlet adapter tests and refactoring
2016-05-23 08:41:42 +02:00
Stian Thorgersen bee9ba0c19 Merge pull request #2862 from mhajas/fixSSLOnWildfly-master
KEYCLOAK-3022 Fix ssl adapter tests on wildfly
2016-05-23 08:40:12 +02:00
Stian Thorgersen f4995410f8 Merge pull request #2856 from vmuzikar/KEYCLOAK-3013
KEYCLOAK-3013 Fix Upload Keystore tests in ClientAuthSignedJWTTest
2016-05-23 08:37:07 +02:00
mhajas 22a94100c8 Fix offline servlets and refactoring 2016-05-20 15:09:54 +02:00
mhajas 183feeb952 Fix ssl adapter tests on wildfly 2016-05-20 14:53:44 +02:00
Stan Silvert 049b0dda23 KEYCLOAK-2913 Migrate i18n package to new testsuite 2016-05-20 08:04:07 -04:00
Thomas Darimont 4bc64350b2 KEYCLOAK-3021: Add Realm Display Name to the label part of the otpauth URI.
Due to the  removal of the realm-displayname as a result of changes made for KEYCLOAK-2410
 the otpauth URI no longer included the realm display name as a hint for the user to which system an
 authenticator belongs to.

We now ensure that the realm display name is again part of the label component of the otpauth URI.
This enables a user to better distinguish between user accounts for different systems.
2016-05-20 13:59:19 +02:00
Vaclav Muzikar 7f474f574c KEYCLOAK-3013 Fix Upload Keystore tests in ClientAuthSignedJWTTest 2016-05-20 10:22:48 +02:00
Stian Thorgersen af7fd0ef61 Merge pull request #2855 from raehalme/KEYCLOAK-3016-master
KEYCLOAK-3016: BasicAuthRequestAuthenticator consumes HttpEntity on errors
2016-05-20 09:14:37 +02:00
Stian Thorgersen 7f3ccad4cc Merge pull request #2852 from abstractj/OAuthRedirectUriTest
OAuthRedirectUriTest migration
2016-05-20 09:13:01 +02:00
Stian Thorgersen 264c816f08 Merge pull request #2846 from ssilvert/migrate-composites
KEYCLOAK-2911 Migrate composites package to new testsuite.
2016-05-20 09:12:30 +02:00
Stian Thorgersen a6f8ff44a6 Merge pull request #2844 from vmuzikar/KEYCLOAK-3011
KEYCLOAK-3011 Fix WelcomePageTest
2016-05-20 09:10:52 +02:00
Stian Thorgersen c03c5d2fe9 Merge pull request #2843 from vramik/KEYCLOAK-3010
KEYCLOAK-3010 Add support for smoke test - clean start - standalone mode
2016-05-20 09:07:06 +02:00
Stian Thorgersen fcfe8582de Merge pull request #2838 from abstractj/KEYCLOAK-2908
KEYCLOAK-2908 - Migration of oidc package
2016-05-20 08:56:43 +02:00
Stian Thorgersen 63af03f11c Merge pull request #2833 from vmuzikar/master
KEYCLOAK-3004 Fix PKCS12 tests in ClientAuthSignedJWTTest
2016-05-20 08:55:15 +02:00
Stian Thorgersen fe841e560d Merge pull request #2832 from ssilvert/migrate-account
KEYCLOAK-2909 Migrate account package to new testsuite
2016-05-20 08:40:15 +02:00
wyvie 88583362ad KEYCLOAK-3000: fixed the saml brokering tests 2016-05-19 14:30:48 +02:00
Thomas Raehalme babe94c50d KEYCLOAK-3016: BasicAuthRequestAuthenticator now consumes HttpEntity also on errors. 2016-05-19 08:47:51 +03:00
Bruno Oliveira e7c98bd31b OAuthRedirectUriTest migration 2016-05-18 18:24:10 -03:00
Stan Silvert 771b4c5b6e KEYCLOAK-2911 Migrate composites package to new testsuite. 2016-05-17 10:23:47 -04:00
Vlasta Ramik ef716b8b94 Add support for smoke test - clean start - standalone mode 2016-05-17 13:55:24 +02:00
Vaclav Muzikar 6bcd72f7f2 KEYCLOAK-3011 Fix WelcomePageTest 2016-05-17 13:25:05 +02:00
Bruno Oliveira c434dc8dcc KEYCLOAK-2908 - Migration of oidc package 2016-05-14 00:50:23 -03:00
Marek Posolda 92db7b3618 Merge pull request #2831 from mposolda/master
KEYCLOAK-2881 Admin events testing
2016-05-13 13:43:47 +02:00
Vaclav Muzikar 62d6bf1dec KEYCLOAK-3004 Fix PKCS12 tests in ClientAuthSignedJWTTest
Use smaller keys to avoid illegal key size exception
2016-05-13 13:32:43 +02:00
mposolda fc9dbcf6cb KEYCLOAK-2881 Admin events testing 2016-05-13 11:29:08 +02:00
Stian Thorgersen 7193b54419 Merge pull request #2829 from stianst/master
Ignore KcSamlBrokerTest
2016-05-13 08:21:37 +02:00
Stian Thorgersen 686e48e9e2 Ignore KcSamlBrokerTest 2016-05-13 08:20:49 +02:00
Stian Thorgersen d8ea4bbc00 Merge pull request #2825 from thomasdarimont/issue/KEYCLOAK-2994-reword-login-messages-in-base-theme
KEYCLOAK-2994: Revise german translations for login pages in base theme
2016-05-13 07:53:32 +02:00
Stian Thorgersen 9467370a8f Merge pull request #2826 from vmuzikar/master
KEYCLOAK-2995 Revert changes from KEYCLOAK-2989 in JWTClientCredentialsProvider
2016-05-13 07:50:24 +02:00
Stian Thorgersen fff595b163 Merge pull request #2823 from mstruk/KEYCLOAK-2993
KEYCLOAK-2993 Fix integration-arquillian tests failing with -Pauth-server-wildfly
2016-05-13 07:32:21 +02:00
Stan Silvert a46982f8ec KEYCLOAK-2909 Migrate account package to new testsuite 2016-05-12 15:52:45 -04:00
Stian Thorgersen 4ddd2ae31d Merge pull request #2821 from mstruk/KEYCLOAK-2863
KEYCLOAK-2863 ClientAttributeCertificateResource
2016-05-12 16:50:40 +02:00
Stian Thorgersen 1c1afc9eaa Merge pull request #2818 from pdrozd/master
KEYCLOAK-2988 - Fix kerberos tests - able to run with Windows and RHIDM.
2016-05-12 16:43:42 +02:00
Vaclav Muzikar e6f0da99e6 KEYCLOAK-2995 Revert changes from KEYCLOAK-2989 in JWTClientCredentialsProvider 2016-05-12 10:45:45 +02:00
Thomas Darimont c59fdb4299 KEYCLOAK-2994: Revise german translations for login pages in base theme
Reworded some german translations and fixed some spelling errors.

This could also be applied to 1.9.x.
2016-05-12 10:41:09 +02:00
Marko Strukelj 0878109647 KEYCLOAK-2993 Fix integration-arquillian tests failing with -Pauth-server-wildfly 2016-05-12 09:39:25 +02:00
Stian Thorgersen 74ff101de4 Merge pull request #2819 from vmuzikar/master
KEYCLOAK-2989 Extend ClientAuthSignedJWTTest
2016-05-12 06:42:15 +02:00
Marko Strukelj ebc184bf94 KEYCLOAK-2863 ClientAttributeCertificateResource 2016-05-11 15:22:39 +02:00
Stian Thorgersen a09f38589f Merge pull request #2815 from abstractj/AuthorizationCodeTest
Migration of AuthorizationCodeTest
2016-05-11 14:09:13 +02:00
Bruno Oliveira 4664bb01d8 Migration of AuthorizationCodeTest 2016-05-11 06:21:12 -03:00
Stian Thorgersen c9e92bce60 Merge pull request #2813 from abstractj/OAuthGrantTest
OAuthGrantTest migration
2016-05-11 06:57:58 +02:00
Stian Thorgersen c04c047fbd Merge pull request #2781 from wyvie/brokering
KEYCLOAK-2971: Added basic oidc broker testing to the new testsuite
2016-05-11 06:57:36 +02:00
wyvie 9e857fe245 KEYCLOAK-2990: added test for single logout to broker testing (new testsuite) 2016-05-10 15:19:44 +02:00
Vaclav Muzikar 9ad584b34d KEYCLOAK-2989 Extend ClientAuthSignedJWTTest 2016-05-10 13:30:55 +02:00
Pavel Drozd 43ab806f8d KEYCLOAK-2988 - Fix kerberos tests - able to run with Windows and RHIDM. 2016-05-10 11:28:43 +02:00
wyvie 18a64103cd KEYCLOAK-2971: saml provider with signature in broker test 2016-05-10 11:07:19 +02:00
Bruno Oliveira bb6a7e357f OAuthGrantTest migration 2016-05-09 11:03:47 -03:00
Stian Thorgersen 0ec23fd40b Merge pull request #2812 from stianst/master
KEYCLOAK-2880 Refactor PermissionTest to not require Java8
2016-05-09 08:28:12 +02:00
Stian Thorgersen d43b230b93 KEYCLOAK-2880 Refactor PermissionTest to not require Java8 2016-05-09 07:25:03 +02:00
Marek Posolda 43b51d4a30 Merge pull request #2809 from mposolda/master
KEYCLOAK-2862 AuthenticationManagementResource tests
2016-05-06 21:29:35 +02:00
mposolda bea2678e85 KEYCLOAK-2862 AuthenticationManagementResource tests 2016-05-06 20:19:58 +02:00
Thomas Darimont 146a26e714 KEYCLOAK-2974: Handle ModelException in UsersResource
We now handle ModelExceptions thrown while creating and updating
a new User by rolling back the transaction and presenting
an error message with a HTTP 409 (conflict) code.
Previously only ModelDuplicateExceptions were handled and
ModelExceptions, e.g. due to a failed database operation
lead to a HTTP 500 server error.
2016-05-06 20:17:22 +02:00
Marek Posolda 016a19fcee Merge pull request #2807 from vramik/KEYCLOAK-2936
KEYCLOAK-2936 add app.server.java.home to karaf arquillian.xsl to be able to run fu…
2016-05-06 20:06:21 +02:00
Stian Thorgersen 9949101fba Merge pull request #2804 from stianst/master
Close admin client after test
2016-05-06 16:27:29 +02:00
wyvie 30f4f920c1 KEYCLOAK-2971: saml provider without signature in broker test 2016-05-06 16:04:39 +02:00
Vlasta Ramik 22200d857c add app.server.java.home to karaf arquillian.xsl to be able to run fuse tests on jdk7, minor test fix 2016-05-06 15:09:59 +02:00
Stian Thorgersen 713909fac9 Close admin client after test 2016-05-06 15:01:32 +02:00
Stian Thorgersen f4d751c839 Merge pull request #2786 from stianst/master
KEYCLOAK-2865 Extend coverage of client admin endpoints
2016-05-06 11:13:15 +02:00
Marek Posolda 411b71bcbb Merge pull request #2768 from vramik/KEYCLOAK-2936
KEYCLOAK-2936 Add app server module and test module for testing fuse6.3, ...
2016-05-06 08:37:34 +02:00
Stian Thorgersen 0ca117b8e9 KEYCLOAK-2865 Extend coverage of client admin endpoints 2016-05-06 08:08:52 +02:00
Marek Posolda ce450e3806 Merge pull request #2801 from mposolda/master
KEYCLOAK-2805 KEYCLOAK-2777 Fuse 6.3 support
2016-05-06 08:00:14 +02:00
Stian Thorgersen f2c1c26385 Merge pull request #2802 from dbarentine/master
KEYCLOAK-2973 Persist federated identity on token update
2016-05-06 07:07:40 +02:00
Stian Thorgersen dbd906b330 Merge pull request #2798 from abstractj/OAuthDance
Migration of OAuthDanceClientSessionExtensionTest
2016-05-06 07:06:22 +02:00
Stian Thorgersen b7e70ea7e3 Merge pull request #2796 from abstractj/RefreshTokenTest
Refresh token test
2016-05-06 07:05:36 +02:00
Stian Thorgersen 0c5d1c7090 Merge pull request #2794 from mstruk/KEYCLOAK-2869
KEYCLOAK-2869 IdentityProvidersResource/IdentityProviderResource
2016-05-06 07:03:52 +02:00
Stian Thorgersen 1d87d1cce1 Merge pull request #2792 from ssilvert/migrate-forms
KEYCLOAK-2906 Migrate forms package to new testsuite
2016-05-06 07:00:10 +02:00
Stian Thorgersen 39019eed10 Merge pull request #2791 from mhajas/SAML-stability
KEYCLOAK-2959 KEYCLOAK-2459 Refactor and improve stability of SAML adapter tests
2016-05-06 06:59:03 +02:00
Stian Thorgersen ddc9766ec9 Merge pull request #2789 from stianst/KEYCLOAK-2549
KEYCLOAK-2549 Re-create master admin client if master realm is overwr…
2016-05-06 06:58:19 +02:00
Dane Barentine 2f4c2c20f9 KEYCLOAK-2973 Persist federated identity on token update 2016-05-05 14:51:17 -07:00
mposolda 741e10060e KEYCLOAK-2805 Minor changes - cleanup and docs 2016-05-05 22:55:53 +02:00
Bruno Oliveira 2a60f65229 Migration of OAuthDanceClientSessionExtensionTest 2016-05-05 15:29:51 -03:00
Bruno Oliveira a5687e4660 Migration of RefreshTokenTest 2016-05-05 15:20:52 -03:00
Marko Strukelj f337085ed0 KEYCLOAK-2869 IdentityProvidersResource/IdentityProviderResource 2016-05-05 17:04:45 +02:00
Bruno Oliveira 8418fec113 Replace by ClientManager and make the code less verbose 2016-05-05 11:53:17 -03:00
Paolo Antinori 534a7b6e59 KEYCLOAK-2777 - Examples Fuse. Correct Parent pom reference 2016-05-05 15:23:45 +02:00
Paolo Antinori 87a7879e71 KEYCLOAK-2777 - Added PathBasedKeycloakConfigResolver for OSGi + examples 2016-05-05 15:23:35 +02:00
Paolo Antinori d35f8c1905 KEYCLOAK-2805 - Update docs for JBoss Fuse 6.3 2016-05-05 15:22:14 +02:00
Paolo Antinori 53799297b3 KEYCLOAK-2805 - Moved cxf.version up to the main pom 2016-05-05 15:22:03 +02:00
Paolo Antinori f5f36545f3 KEYCLOAK-2805 - Support for JBoss Fuse 6.3
Upgrade of CXF, Jetty and Pax-Web required to rewrite part of the integration.
2016-05-05 15:21:51 +02:00
mhajas 40bf5fb5d2 Refactor and improve stability of SAML tests 2016-05-05 12:31:55 +02:00
Marek Posolda 49dc5363bb Merge pull request #2783 from mposolda/master
Easier MariaDB support in tests
2016-05-05 10:04:38 +02:00
Stian Thorgersen 1cc4cc30a6 KEYCLOAK-2549 Re-create master admin client if master realm is overwritten on import 2016-05-05 07:19:32 +02:00
Stian Thorgersen 8799405673 Merge pull request #2784 from abstractj/RHSSO-121
RHSSO-121: Offline Tokens
2016-05-05 06:35:58 +02:00
Bruno Oliveira 9a3bea7062 RHSSO-121: Offline Tokens 2016-05-04 22:48:59 -03:00
Stan Silvert c392f6659e KEYCLOAK-2906 Migrate forms package to new testsuite 2016-05-04 18:46:38 -04:00
mposolda 6a75aec6d8 Easier MariaDB support in tests 2016-05-04 23:08:30 +02:00
wyvie a867a1646a KEYCLOAK-2971: Added basic oidc broker testing to the new testsuite 2016-05-04 17:29:56 +02:00
Stian Thorgersen 5abe06a2b7 Merge pull request #2778 from stianst/master
KEYCLOAK-2880 Permissions tests for admin endpoints
2016-05-04 16:54:25 +02:00
Stian Thorgersen aba69e0628 Suppress log output from resteasy during tests 2016-05-04 13:57:28 +02:00
Stian Thorgersen 2355db57da KEYCLOAK-2880 Permissions tests for admin endpoints 2016-05-04 08:25:05 +02:00
Stian Thorgersen 7796bf3510 Merge pull request #2776 from mhajas/jsconsole-stability
KEYCLOAK-2916 Improve stability of JS-console
2016-05-04 06:35:11 +02:00
mhajas 09d1c8bafc Improve stability of JS-console tests 2016-05-03 15:06:10 +02:00
Stian Thorgersen dcc9e30e8d Merge pull request #2767 from stianst/master
Moved ClientRedirectTest to new testsuite
2016-05-03 05:43:13 +02:00
Vlasta Ramik 01a96b62dc Add app server module and test module for testing fuse6.3, rename feature in fuse6.2 tests 2016-04-28 14:50:10 +02:00
Stian Thorgersen a206a6d16d Merge pull request #2765 from stianst/master
KEYCLOAK-2932 KEYCLOAK-2934
2016-04-28 14:29:22 +02:00
Stian Thorgersen 19c29387fa Moved ClientRedirectTest to new testsuite 2016-04-28 13:42:18 +02:00
Stian Thorgersen 3565706379 Merge pull request #2763 from mposolda/master
KEYCLOAK-2903 Document proxy-address-forwarding with reverse proxy/lo…
2016-04-28 13:11:19 +02:00
Stian Thorgersen 6ec19d0b63 KEYCLOAK-2932 KEYCLOAK-2934 2016-04-28 13:07:15 +02:00
mposolda 71247538ee KEYCLOAK-2903 Document proxy-address-forwarding with reverse proxy/loadbalancer setup 2016-04-28 13:02:39 +02:00
Stian Thorgersen b491a10aa9 Merge pull request #2761 from stianst/master
KEYCLOAK-2933
2016-04-28 13:01:54 +02:00
Stian Thorgersen 20dac1d885 KEYCLOAK-2933
RealmTest is failing on WildFly
2016-04-28 12:22:41 +02:00
Stian Thorgersen 1de3d143aa Merge pull request #2759 from vramik/KEYCLOAK-2928
KEYCLOAK-2928 Enabled/edited CustomAuthFlowCookieTest
2016-04-28 11:03:31 +02:00
Vlasta Ramik 0b875d4688 Enabled/edited CustomAuthFlowCookieTest 2016-04-28 10:22:54 +02:00
Stian Thorgersen acba6cd210 Merge pull request #2748 from thomasdarimont/issue/KEYCLOAK-2924-AdminEvents-on-group-membership-changes
KEYCLOAK-2924: Fire AdminEvents on user group membership changes.
2016-04-28 08:37:46 +02:00
Stian Thorgersen 231e049771 Merge pull request #2753 from ssilvert/migrate-actions
KEYCLOAK-2905 Migrate actions package from old testsuite
2016-04-28 06:43:55 +02:00
Bill Burke 43e88b4d73 Merge pull request #2755 from patriot1burke/master
add bind addresses to domain template
2016-04-27 22:09:07 -04:00
Bill Burke c52da46e54 add bind addresses to domain template 2016-04-27 22:05:01 -04:00
Stan Silvert 29d6832882 KEYCLOAK-2905 Migrate actions package from old testsuite 2016-04-27 14:09:46 -04:00
Bill Burke 15f4c764bc Merge pull request #2752 from patriot1burke/master
KEYCLOAK-2922 KEYCLOAK-2920
2016-04-27 11:37:20 -04:00
Bill Burke 35a9527407 Merge pull request #2750 from stianst/master
KEYCLOAK-2927 Rename add-user script to add-user-keycloak
2016-04-27 11:05:26 -04:00
Bill Burke cd8ba1653d KEYCLOAK-2922 KEYCLOAK-2920 2016-04-27 10:36:36 -04:00
Stian Thorgersen 8d9047c338 KEYCLOAK-2927 Rename add-user script to add-user-keycloak 2016-04-27 16:18:42 +02:00
Thomas Darimont c8d47926b8 KEYCLOAK-2489 - Add support for Script-based AuthenticationExecution definitions.
This is a POC for script based authenticator support.
Introduced a ScriptBasedAuthenticator that is bootstraped via a
ScriptBasedAuthenticatorFactory can be execute a configured script
against a provided execution context.
Added an alias property to the AuthFlowExecutionRepresentation in order
to be able to differentiate multiple instances of an Authenticator
within the same AuthFlow.

For convenience editing the AngularJS bindings for the ACE editor were
added for fancy script editing - this needs to be cut down a bit wrt to
themes and supported scripts - e.g. we probably don't expect users to write
authenticator scripts in Cobol...
Removed currently not needed ACE sytax highlighting and themes.

Scripting is now available to all keycloak components that have access to the KeycloakSession.
Introduced new Scripting SPI for configurable scripting providers.
2016-04-27 14:37:13 +02:00
Stian Thorgersen 83370f0666 Merge pull request #2737 from mhajas/adapter-ssl-PR
KEYCLOAK-2915 Fix adapter ssl tests on EAP/EAP6
2016-04-27 13:50:08 +02:00
Stian Thorgersen d77c1e616f Merge pull request #2734 from vramik/KEYCLOAK-2889
KEYCLOAK-2889 Fix adapter tests for Karaf/Fuse
2016-04-27 13:49:27 +02:00
Stian Thorgersen ae56bb30c9 Merge pull request #2747 from stianst/KEYCLOAK-2871-master
KEYCLOAK-2871 Extend coverage on RealmAdminResource
2016-04-27 13:38:25 +02:00
Thomas Darimont 27ef919d07 KEYCLOAK-2924: Fire AdminEvents on user group membership changes.
We now fire AdminEvents if a user joins or leaves a group.
This information can be used to deduce potential role changes
in custom event listeners.
2016-04-27 11:17:23 +02:00
Marek Posolda dcb6cedfb7 Merge pull request #2743 from mposolda/master-loadbalancer
KEYCLOAK-2903 Fix WelcomeResource to not allow requests forwarded fro…
2016-04-27 11:10:45 +02:00
Stian Thorgersen 95724e36f3 KEYCLOAK-2871 Extend coverage on RealmAdminResource 2016-04-27 10:29:24 +02:00
Marek Posolda ce58f00caa Merge pull request #2745 from mposolda/master
KEYCLOAK-2898 Fix GroupMappersTest on wildfly. Clearing AssertEvents …
2016-04-26 18:01:25 +02:00
mposolda 225523fee0 KEYCLOAK-2898 Fix GroupMappersTest on wildfly. Clearing AssertEvents events queue before test instead of after 2016-04-26 16:10:40 +02:00
mposolda c7335fa242 KEYCLOAK-2903 Fix WelcomeResource to not allow requests forwarded from proxy/loadbalancer 2016-04-26 12:03:43 +02:00
mhajas 57ccbb7f49 Fix adapter ssl tests on EAP/EAP6 2016-04-26 09:15:12 +02:00
Stian Thorgersen 4433a058a4 Merge pull request #2726 from abstractj/RHSSO-106-master
RHSSO-106: Migration of ResourceOwnerPasswordCredentialsGrantTest
2016-04-25 19:46:12 +02:00
Vlasta Ramik bf76be21c7 Fix adapter tests for Karaf/Fuse 2016-04-25 15:29:41 +02:00
Bruno Oliveira bbe7ff1dce RHSSO-106: Migration of ResourceOwnerPasswordCredentialsGrantTest 2016-04-25 10:15:27 -03:00
Marek Posolda 5f16f0ede8 Merge pull request #2732 from mposolda/master
KEYCLOAK-2900
2016-04-25 15:00:09 +02:00
Stian Thorgersen 7dd2b3d7be Merge pull request #2730 from abstractj/RHSSO-130
RHSSO-130: AccessTokenTest migration
2016-04-25 13:43:03 +02:00
Stian Thorgersen 320a9da585 Merge pull request #2711 from ssilvert/migrate-LoginTest
Migrate LoginTest
2016-04-25 13:40:51 +02:00
mposolda fa8b272e76 KEYCLOAK-2900 2016-04-25 13:20:29 +02:00
Marek Posolda 6c3d31dd4c Merge pull request #2728 from mstruk/KEYCLOAK-2899
KEYCLOAK-2899 Tests fail with -Pauth-server-wildfly due to missing logging dependecy
2016-04-22 21:37:48 +02:00
Bruno Oliveira 1cc4ca2e71 RHSSO-130: AccessTokenTest migration 2016-04-22 16:30:57 -03:00
Marko Strukelj eea19e7850 KEYCLOAK-2899 Tests fail with -Pauth-server-wildfly due to missing logging dependecy 2016-04-22 19:48:13 +02:00
Marek Posolda 2047363e86 Merge pull request #2722 from mstruk/KEYCLOAK-2893
KEYCLOAK-2893 Fix TokenIntrospectionTest
2016-04-22 15:16:17 +02:00
Marek Posolda 0d88c9050a Merge pull request #2718 from abstractj/RHSSO-108-client-auth-signed
Rhsso 108 client auth signed
2016-04-22 15:07:10 +02:00
Marek Posolda 236fcd66d4 Merge pull request #2721 from mposolda/master
KEYCLOAK-2878 UserFederation admin tests
2016-04-22 15:00:44 +02:00
Marko Strukelj 1a5517f986 KEYCLOAK-2893 Fix TokenIntrospectionTest 2016-04-22 14:23:59 +02:00
mposolda 01cc0d0e1d KEYCLOAK-2878 Added UserFederationLdapConnectionTest 2016-04-22 14:03:51 +02:00
mposolda e0aedfb93d KEYCLOAK-2878 UserFederation mapper testing 2016-04-22 14:03:42 +02:00
Marek Posolda 0797cf6db7 Merge pull request #2716 from mstruk/KEYCLOAK-2893
KEYCLOAK-2893 Fix TokenIntrospectionTest
2016-04-22 13:42:54 +02:00
Bruno Oliveira ec77970021 Inclusion of try/finally suggested by Stian 2016-04-22 08:29:32 -03:00
Bruno Oliveira 30f34173c5 RHSSO-108: Migration of ClientAuthSignedJWTTest 2016-04-22 08:29:28 -03:00
Marko Strukelj 0e52781a1f KEYCLOAK-2893 Fix TokenIntrospectionTest 2016-04-22 11:18:09 +02:00
Marek Posolda 10bda7c96d Merge pull request #2715 from mposolda/master
UserFederation admin testing
2016-04-22 00:43:37 +02:00
mposolda afcdce6b71 Simplified calling of AuthenticationManagementResource.getExecutions() 2016-04-21 23:11:25 +02:00
mposolda f6a718f10a KEYCLOAK-2878 Testing of UserFederation admin REST endpoints 2016-04-21 23:11:14 +02:00
Stan Silvert 9335ab6b22 Migrate LoginTest 2016-04-21 09:37:54 -04:00
Stian Thorgersen 631dcd93e6 Merge pull request #2707 from stianst/KEYCLOAK-2866
KEYCLOAK-2866 KEYCLOAK-2874 Test role mapping resource
2016-04-21 14:58:15 +02:00
Stian Thorgersen 756cc0dca0 KEYCLOAK-2866 KEYCLOAK-2874 Test role mapping resource 2016-04-21 14:21:27 +02:00
Stian Thorgersen 9fcef2c80f Merge pull request #2705 from stianst/KEYCLOAK-2868
KEYCLOAK-2868 Extend coverage of GroupResource tests
2016-04-21 13:38:14 +02:00
Stian Thorgersen 19b05ad62f Merge pull request #2704 from stianst/KEYCLOAK-2838
KEYCLOAK-2838: Add cookie storage fallback to keycloak.js
2016-04-21 13:37:52 +02:00
Stian Thorgersen 578b5e2b59 KEYCLOAK-2868 Extend coverage of GroupResource tests 2016-04-21 11:52:20 +02:00
Stian Thorgersen 6776f5c341 Merge pull request #2701 from stianst/KEYCLOAK-2873
KEYCLOAK-2873 / KEYCLOAK-2875 Test RoleContainerResource
2016-04-21 11:47:50 +02:00
Maximilian Szengel c3c3b90fb9 KEYCLOAK-2838: Add cookie storage fallback to keycloak.js 2016-04-21 11:07:41 +02:00
Stian Thorgersen 34d5e85316 KEYCLOAK-2873 / KEYCLOAK-2875 Test RoleContainerResource 2016-04-21 10:58:46 +02:00
Stian Thorgersen d0a9e45826 Merge pull request #2700 from stianst/KEYCLOAK-2864
KEYCLOAK-2864 Test InitialAccessTokenResource
2016-04-21 10:27:11 +02:00
Stian Thorgersen 23b4b4283b KEYCLOAK-2864 Test InitialAccessTokenResource 2016-04-21 09:44:29 +02:00
Stian Thorgersen 673253a539 Merge pull request #2697 from stianst/KEYCLOAK-2872
KEYCLOAK-2872 Test RoleByIdResource
2016-04-21 09:31:43 +02:00
Stian Thorgersen 4f5b71d81a KEYCLOAK-2872 Test RoleByIdResource 2016-04-21 07:09:25 +02:00
Stian Thorgersen 70ae0b2317 Merge pull request #2694 from abstractj/RHSSO-108
RHSSO-108: Client signed token authentication (master)
2016-04-21 06:19:25 +02:00
Stian Thorgersen d91a9df177 Merge pull request #2696 from stianst/master
Ignore failing CustomAuthFlowCookieTest
2016-04-21 06:07:33 +02:00
Stian Thorgersen 27fd5f395f Ignore failing CustomAuthFlowCookieTest 2016-04-21 06:05:45 +02:00
Bruno Oliveira 2f3b5e9b88 RHSSO-108: Client signed token authentication 2016-04-20 20:47:50 -03:00
Stian Thorgersen 9edc2000e7 Merge pull request #2690 from stianst/role-assertevents
Made AssertEvents work with @Rule
2016-04-20 21:44:47 +02:00
Stian Thorgersen b6257e66b3 Merge pull request #2679 from pedroigor/KEYCLOAK-2835
[KEYCLOAK-2835] - Adding SOAP binding to the list of supported SingleSignOnService.
2016-04-20 20:13:49 +02:00
Stian Thorgersen 890af8da52 Made AssertEvents work with @Rule 2016-04-20 20:09:09 +02:00
Stian Thorgersen 974906d37f Merge pull request #2688 from ssilvert/master
Rename oauthClient to oauth in AbstractKeycloakTst
2016-04-20 19:40:50 +02:00
Stian Thorgersen f2f2158154 Merge pull request #2687 from mposolda/master
KEYCLOAK-2842 Not possible to add new execution under registration flow
2016-04-20 19:40:34 +02:00
Stian Thorgersen ea99a05ffe Merge pull request #2684 from mstruk/assert-events-refactor
KEYCLOAK-2755 Refactor testsuite events provider
2016-04-20 19:36:57 +02:00
Stian Thorgersen 0cffa5740d Merge pull request #2683 from stianst/KEYCLOAK-2861-master
KEYCLOAK-2861 Test AttackDetectionResource
2016-04-20 19:36:11 +02:00
mposolda a341889d2c KEYCLOAK-2842 Not possible to add new execution under registration flow 2016-04-20 18:39:11 +02:00
Stan Silvert 9007f8b19c Rename oauthClient to oauth in AbstractKeycloakTst 2016-04-20 12:37:38 -04:00
Marko Strukelj b8832d2d71 KEYCLOAK-2755 Refactor testsuite events provider 2016-04-20 16:43:20 +02:00
Stian Thorgersen 86dfcecef6 KEYCLOAK-2861 Test AttackDetectionResource 2016-04-20 16:21:57 +02:00
Stian Thorgersen 8efbdce810 Merge pull request #2680 from stianst/KEYCLOAK-2850
Moved admin tests from endpoint package back to admin package
2016-04-20 15:35:49 +02:00
Stian Thorgersen 1667ada111 Moved admin tests from endpoint package back to admin package 2016-04-20 14:56:07 +02:00
Stian Thorgersen b6ed681402 Merge pull request #2677 from stianst/KEYCLOAK-2850
KEYCLOAK-2850 Migrated ImpersonationTest and added builders
2016-04-20 14:48:05 +02:00
Marek Posolda 2dcf96eaad Merge pull request #2675 from mposolda/master
Client template fixes
2016-04-20 14:13:55 +02:00
Stian Thorgersen b8b40e75ef KEYCLOAK-2850 Migrated ImpersonationTest and added builders 2016-04-20 13:52:08 +02:00
Pedro Igor 81e4f4b351 [KEYCLOAK-2835] - Adding SOAP binding to the list of supported SingleSignOnService. 2016-04-20 08:48:59 -03:00
mposolda afc8179cf8 KEYCLOAK-2846 export/import of clientTemplate scopes 2016-04-20 13:30:01 +02:00
mposolda 919a3791ea KEYCLOAK-2844 Unexpected error when trying to remove clientTemplate in use 2016-04-20 13:25:13 +02:00
Stian Thorgersen e490a6e3bd Merge pull request #2673 from stianst/master
KEYCLOAK-2850 Migrated ConcurrencyTest
2016-04-20 12:49:48 +02:00
Stian Thorgersen eab548d7f0 Merge pull request #2671 from stianst/KEYCLOAK-2491
KEYCLOAK-2491 Fix permissions in admin console to match permissions i…
2016-04-20 12:49:28 +02:00
Stian Thorgersen 37256b6b8f KEYCLOAK-2850 Migrated ConcurrencyTest 2016-04-20 10:07:16 +02:00
Stian Thorgersen 04d76b0052 KEYCLOAK-2491 Fix permissions in admin console to match permissions in admin endpoints 2016-04-20 09:57:57 +02:00
Marek Posolda ecd3d2187f Merge pull request #2670 from mposolda/master
KEYCLOAK-2850 Migrate RealmTest from old testsuite to new
2016-04-20 09:33:47 +02:00
Stian Thorgersen b3d40c6f85 Merge pull request #2667 from stianst/KEYCLOAK-2832
KEYCLOAK-2832
2016-04-20 09:10:49 +02:00
mposolda d415bdb3d2 Remove AbstractAdminTest.assertNames and related methods (as they are available in Assert class) 2016-04-20 08:22:42 +02:00
mposolda 060527ac67 KEYCLOAK-2850 migrate RealmTest from old testsuite to new 2016-04-20 08:22:32 +02:00
Stian Thorgersen f71273a1f9 KEYCLOAK-2832
Authentication failure logs at ERROR level
2016-04-20 07:32:07 +02:00
Stian Thorgersen 656161ff61 Merge pull request #2651 from mhajas/truststore
KEYCLOAK-2841 Trustore support in adapter tests
2016-04-20 06:57:01 +02:00
Marek Posolda 2044e47d03 Merge pull request #2666 from mposolda/master
KEYCLOAK-2852 Moved JAAS classes back to package org.keycloak.adapter…
2016-04-19 23:00:02 +02:00
mposolda 6baa2228e7 KEYCLOAK-2852 Moved JAAS classes back to package org.keycloak.adapters.jaas 2016-04-19 22:19:10 +02:00
Stian Thorgersen d9f82affb0 Merge pull request #2664 from stianst/master
Migrate pages from old testsuite, make OAuthClient injectable
2016-04-19 22:08:47 +02:00
Stian Thorgersen d2e3389414 Removed duplicated ClientInitialAccessTest 2016-04-19 20:34:59 +02:00
Stian Thorgersen 7cf77e1bb4 Merge pull request #2662 from vmuzikar/master
KEYCLOAK-2854 Fix Client Settings Console UI test
2016-04-19 20:32:09 +02:00
Stian Thorgersen da2ad8f645 Merge pull request #2661 from mmerdes/patch-1
Update spring-boot-adapter.xml
2016-04-19 20:31:32 +02:00
Stian Thorgersen f4a41071ea Merge pull request #2652 from abstractj/apiutil-removal
Removal of duplicated API Util
2016-04-19 20:31:15 +02:00
Stian Thorgersen a44add29b4 Merge pull request #2646 from tkyjovsk/performance-tests
Added module 'adapters/jboss/remote' with performance tests.
2016-04-19 20:30:26 +02:00
Stian Thorgersen de8ffae427 Migrate pages from old testsuite, make OAuthClient injectable 2016-04-19 20:16:55 +02:00
Vaclav Muzikar 3d370f9d11 KEYCLOAK-2854 Fix Client Settings Console UI test 2016-04-19 17:54:58 +02:00
Matthias Merdes 257ccbb939 Update spring-boot-adapter.xml
fixed typo in spring boot example configuration
2016-04-19 17:02:37 +02:00
Marek Posolda bead313e27 Merge pull request #2658 from stianst/KEYCLOAK-2850
KEYCLOAK-2850 Migrate admin endpoint identity provider test
2016-04-19 16:24:52 +02:00
Marek Posolda 0ad4041fd9 Merge pull request #2656 from mposolda/master
KEYCLOAK-2849 Admin endpoint tests for client templates
2016-04-19 15:22:11 +02:00
Bruno Oliveira 8d1108ba1b Removal of duplicated API Util 2016-04-19 10:21:17 -03:00
mposolda fb5e5d5cb6 KEYCLOAK-2849 Admin endpoint tests for client templates 2016-04-19 14:37:38 +02:00
Stian Thorgersen 899c9f48e9 KEYCLOAK-2850 Migrate admin endpoint identity provider test 2016-04-19 14:27:16 +02:00
Stian Thorgersen 2d36d48356 Merge pull request #2654 from stianst/KEYCLOAK-2828
KEYCLOAK-2828
2016-04-19 13:44:14 +02:00
Stian Thorgersen 5606160e70 KEYCLOAK-2828 Refactor contribution and add tests 2016-04-19 13:09:00 +02:00
Thomas Raehalme cd1094c3ad KEYCLOAK-2828: LoginStatusIframeEndpoint now sets the P3P header.
IE requires a P3P header to be present in <iframe /> response. Otherwise
cookies are forbidden. The value of the header does not seem to matter.
2016-04-19 10:24:28 +02:00
Marek Posolda 069d362778 Merge pull request #2649 from pdrozd/KEYCLOAK-2839
KEYCLOAK-2839 - kerberos tests migration.
2016-04-18 20:05:58 +02:00
mhajas 77c37ccaf6 Trustore support in adapter tests + fix tests 2016-04-18 16:14:10 +02:00
Pavel Drozd c52c2eb471 KEYCLOAK-2839 - kerberos tests migration. 2016-04-18 14:37:33 +02:00
Tomas Kyjovsky 92d9808cc0 Added module 'adapters/jboss/remote' with performance tests. 2016-04-18 14:10:36 +02:00
Bill Burke 8830f87a76 Merge pull request #2644 from patriot1burke/master
KEYCLOAK-2740
2016-04-15 17:42:26 -04:00
Bill Burke 600f429abb KEYCLOAK-2740 2016-04-15 16:49:06 -04:00
Bill Burke fdcc2d32f6 Merge pull request #2607 from vramik/KEYCLOAK-2757
KEYCLOAK-2757 Add tests to cover custom auth flows
2016-04-15 16:28:05 -04:00
Bill Burke 9083bbf669 Merge pull request #2643 from patriot1burke/master
KEYCLOAK-2584
2016-04-15 16:27:39 -04:00
Bill Burke 58b5c3d75d KEYCLOAK-2584 2016-04-15 15:15:04 -04:00
Stian Thorgersen 44c3a56a21 Merge pull request #2635 from ssilvert/migrate-oauth-client-2
KEYCLOAK-2743: Port OAuthClient to new testsuite
2016-04-15 08:41:46 +02:00
Stan Silvert 6805b991e1 Move test under 'endpoint' package. 2016-04-14 19:46:15 -04:00
Stan Silvert e25a0d3cf1 Create TestRealmKeycloakTest as common base class for tests that need
testrealm.json.  Rename admin packaget to endpoint.  Rename legacy package
to match old testsuite.
test suite.
2016-04-14 15:39:32 -04:00
Stan Silvert ca72a3bd70 KEYCLOAK-2743: Port OAuthClient to new testsuite 2016-04-14 15:39:03 -04:00
Stian Thorgersen 3f6377b31f Merge pull request #2634 from stianst/master
KEYCLOAK-2827 ModuleLoadError: org.keycloak.keycloak-core-public:main
2016-04-14 15:30:05 +02:00
Stian Thorgersen 0008d50dfa KEYCLOAK-2827 ModuleLoadError: org.keycloak.keycloak-core-public:main 2016-04-14 15:23:21 +02:00
Stian Thorgersen a723dde180 Merge pull request #2632 from stianst/master
KEYCLOAK-2825 KEYCLOAK-2826 Remove private for org.keycloak.keycloak-…
2016-04-14 15:21:36 +02:00
Stian Thorgersen 9ef29b6a3e KEYCLOAK-2825 KEYCLOAK-2826 Remove private for org.keycloak.keycloak-adapter-core and org.keycloak.keycloak-adapter-spi modules 2016-04-14 14:41:40 +02:00
Marek Posolda 2a5fd36b6c Merge pull request #2630 from mposolda/master
KEYCLOAK-2823 Password policy 'hashAlgorithm' value not correctly sho…
2016-04-14 13:56:03 +02:00
Stian Thorgersen 2d9bb402fc Merge pull request #2628 from ilanddev/master
KEYCLOAK-2821 Add adapter option
2016-04-14 13:23:11 +02:00
mposolda 44ea920f92 KEYCLOAK-2823 Password policy 'hashAlgorithm' value not correctly shown in admin console 2016-04-14 13:16:14 +02:00
Jonathan Masmejean b4ce19c231 fix formating issue. 2016-04-14 12:00:41 +02:00
Jonathan Masmejean 93b54ce13a KEYCLOAK-2821 : Add the adapter option
You just can add an 'adapter' option to the kc.init() function like :

kc.init({adapter: "default | cordova"});

This will allow the users to choose the adapter they want. They can force the use of the default adapter even if they are using cordova or use the cordova adapter even if they are using a regular desktop.

If you omit this parameter, it just fallback to the old way. So, if you are under cordova it will run the cordova adapter and if you are under a desktop, it will load the default adapter instead.

Hope this can help.
2016-04-14 11:59:34 +02:00
Marek Posolda 3275b528f9 Merge pull request #2627 from mposolda/master
Migration and mongo fix
2016-04-14 11:48:16 +02:00
mposolda 5263101bc0 KEYCLOAK-2820 Mongo doesn't start on wildfly 2016-04-14 10:43:57 +02:00
mposolda 32d7464e52 KEYCLOAK-2819 Fix realm security header setup after migration 2016-04-14 10:43:48 +02:00
Stian Thorgersen 9e3fa4b566 Merge pull request #2624 from stianst/master
KEYCLOAK-2818
2016-04-14 09:14:31 +02:00
Stian Thorgersen f64ffcbefe KEYCLOAK-2818
Fix poms not updated by versions plugin
2016-04-14 08:16:07 +02:00
Stian Thorgersen 3bc57c19f0 Fix to cors-example-fix 2016-04-14 07:09:35 +02:00
Stian Thorgersen 5328d760fa Merge branch 'cors-example-fix-master' of https://github.com/abstractj/keycloak 2016-04-14 07:08:12 +02:00
Stian Thorgersen 8095587e63 Merge pull request #2623 from patriot1burke/master
merge adapter-spi adapter-spi-public
2016-04-14 07:03:50 +02:00
Stian Thorgersen 5c4bcdce57 Merge pull request #2621 from abstractj/minor-fix-master
There's no such profile for this example (master)
2016-04-14 07:02:43 +02:00
Stian Thorgersen 125eff9a95 Merge pull request #2618 from abstractj/angular2-example
Example points to wrong KC version
2016-04-14 07:00:34 +02:00
Stian Thorgersen 641dc9b3ef Merge pull request #2620 from abstractj/cordova-master
inappbrowser plugin returns 404 with the current namespace (master)
2016-04-14 06:59:58 +02:00
Bill Burke b080e1e782 merge adapter-spi adapter-spi-public 2016-04-13 22:25:30 -04:00
Bruno Oliveira f103480518 There's no such profile for this example 2016-04-13 15:50:24 -03:00
Bruno Oliveira 9af8af73bf inappbrowser plugin returns 404 with the current namespace 2016-04-13 15:48:48 -03:00
Bruno Oliveira 7279c88638 Fix the broken logout URL 2016-04-13 15:47:23 -03:00
Bruno Oliveira a714896264 Make the client URL match exactly the same configured at the realm 2016-04-13 15:47:15 -03:00
Bruno Oliveira 29eadf915a Example points to wrong KC version 2016-04-13 15:45:41 -03:00
Marek Posolda 3d310f8cc6 Merge pull request #2611 from mposolda/master
KEYCLOAK-2812 Make testsuite-arquillian working with -Pauth-server-wi…
2016-04-13 16:41:24 +02:00
mposolda 5a108c60a0 KEYCLOAK-2812 Make testsuite-arquillian working with -Pauth-server-wildfly 2016-04-13 16:05:03 +02:00
Marek Posolda 59535e4c43 Merge pull request #2608 from mposolda/master
KEYCLOAK-2811 FederationProvidersIntegrationTest.testReadOnly failing…
2016-04-13 13:50:04 +02:00
mposolda df1c111a72 KEYCLOAK-2811 FederationProvidersIntegrationTest.testReadOnly failing on MSAD 2016-04-13 12:40:39 +02:00
Marek Posolda 7bcd954e91 Merge pull request #2604 from mposolda/master
KEYCLOAK-2809 NPE when removing role, which is in scope of some Clien…
2016-04-13 12:39:04 +02:00
Vlasta Ramik 1754f242c7 Add tests to cover custom auth flows 2016-04-13 12:34:20 +02:00
Stian Thorgersen 794c4bc5f1 Merge pull request #2602 from stianst/KEYCLOAK-2810
KEYCLOAK-2810 Added robots.txt and robots meta header
2016-04-13 11:58:20 +02:00
mposolda 3c3bbdbbdb KEYCLOAK-2809 NPE when removing role, which is in scope of some ClientTemplate 2016-04-13 11:49:29 +02:00
Stian Thorgersen 6a428c8ee7 KEYCLOAK-2810 Added robots.txt and robots meta header 2016-04-13 11:22:57 +02:00
Marek Posolda d1a3ff8707 Merge pull request #2599 from mposolda/master
Fix testsuite with Mongo
2016-04-13 11:06:51 +02:00
Stian Thorgersen 9f0149d69c Merge pull request #2600 from stianst/KEYCLOAK-2804
KEYCLOAK-2804 Prevent browser from prefilling username/password into …
2016-04-13 10:39:46 +02:00
Stian Thorgersen bb3937e3c1 KEYCLOAK-2804 Prevent browser from prefilling username/password into non-login form 2016-04-13 10:00:48 +02:00
mposolda a52fb53ac7 Fix testsuite with Mongo 2016-04-13 09:55:28 +02:00
Bill Burke d5c0769499 Merge pull request #2596 from patriot1burke/master
KEYCLOAK-2790
2016-04-12 19:45:27 -04:00
Bill Burke 8f7f9e0b9c KEYCLOAK-2790 2016-04-12 18:25:23 -04:00
Bill Burke 6b261cd6e9 Merge pull request #2585 from mhajas/secureDeployment-PR
KEYCLOAK-2199 Add tests for secure deployment
2016-04-12 17:53:29 -04:00
Bill Burke b2a803929d Merge pull request #2567 from cpitman/proxy-headers
KEYCLOAK-2791 - Proxy handling for X-Forwarded headers
2016-04-12 17:53:15 -04:00
Bill Burke 137edf9b1a Merge pull request #2587 from vramik/KEYCLOAK-2794
KEYCLOAK-2794 Change undertow-embedded version
2016-04-12 17:52:45 -04:00
Bill Burke 3a669ad7d5 Merge pull request #2594 from patriot1burke/master
public private api
2016-04-12 17:51:57 -04:00
Bill Burke 7ec82ee7e2 public/private api 2016-04-12 16:48:30 -04:00
Bill Burke 515ed226be Merge remote-tracking branch 'upstream/master' 2016-04-12 15:19:58 -04:00
Bill Burke cca91dd175 public/private 2016-04-12 15:19:46 -04:00
Stian Thorgersen ca46621782 Merge pull request #2591 from stianst/KEYCLOAK-2807
KEYCLOAK-2807 Fix server info providers page
2016-04-12 16:18:17 +02:00
Stian Thorgersen 1c2eafeb80 KEYCLOAK-2807 Fix server info providers page 2016-04-12 15:38:52 +02:00
Stian Thorgersen 7109ad247f Merge pull request #2589 from stianst/KEYCLOAK-2799
KEYCLOAK-2799 Show error for identity brokering login if user is disa…
2016-04-12 14:11:15 +02:00
Stian Thorgersen 538e49117f KEYCLOAK-2799 Show error for identity brokering login if user is disabled 2016-04-12 13:14:42 +02:00
Stian Thorgersen fcf7b28b8f Merge pull request #2583 from stianst/KEYCLOAK-2803
KEYCLOAK-2803 Fix failure to add execution to client flow
2016-04-12 13:05:05 +02:00
Vlasta Ramik 36266b8574 Change undertow-embedded version from snapshot to released version 1.0.0.Alpha2 2016-04-12 09:40:57 +02:00
mhajas 8d15520939 Add tests for secure deployment 2016-04-12 09:13:15 +02:00
Stian Thorgersen 350a9cd997 KEYCLOAK-2803 Fix failure to add execution to client flow 2016-04-12 08:04:15 +02:00
Stian Thorgersen a67ead6a1b Merge pull request #2581 from stianst/KEYCLOAK-2770
KEYCLOAK-2770 Close mail transport after sending message
2016-04-12 07:43:56 +02:00
Stian Thorgersen 512a5ef079 Merge pull request #2572 from pdrozd/KEYCLOAK-2794
KEYCLOAK-2794 - changed version of undertow-embedded.
2016-04-12 07:42:13 +02:00
Stian Thorgersen d748f7e459 Merge pull request #2573 from stianst/KEYCLOAK-2700
KEYCLOAK-2700 Import existing realm fails due to can't delete group
2016-04-12 07:20:01 +02:00
Stian Thorgersen bd2238dbb8 KEYCLOAK-2770 Close mail transport after sending message 2016-04-12 07:06:52 +02:00
Marek Posolda bed8db7466 Merge pull request #2579 from mposolda/master
Identity brokering error handling fixes
2016-04-12 00:08:52 +02:00
mposolda e4f75409c9 KEYCLOAK-2802 NPE during identity broker cancelled from account mgmt 2016-04-11 23:31:24 +02:00
mposolda 98ad9b7e7c KEYCLOAK-2801 Redirected to login theme error page after failed social linking from account management 2016-04-11 23:30:18 +02:00
Marek Posolda 9579a7317e Merge pull request #2577 from mposolda/master
KEYCLOAK-2769 Better error handling of expired code in IdentityBroker…
2016-04-11 18:56:27 +02:00
mposolda 3e9ba71baa KEYCLOAK-2769 Better error handling of expired code in IdentityBrokerService 2016-04-11 18:20:26 +02:00
Marek Posolda 23e261244c Merge pull request #2575 from mposolda/master
KEYCLOAK-2795 Testsuite fails sometimes with NPE in LockServiceFactor…
2016-04-11 10:50:56 +02:00
mposolda 65f94fdf84 KEYCLOAK-2795 Testsuite fails sometimes with NPE in LockServiceFactory.getLockService 2016-04-11 10:09:15 +02:00
Stian Thorgersen e588860c21 KEYCLOAK-2700 Import existing realm fails due to can't delete group 2016-04-11 09:18:57 +02:00
Stian Thorgersen dccc338622 Merge pull request #2569 from stianst/KEYCLOAK-2766
KEYCLOAK-2766 Add missing id to AuthenticatorConfigRepresentation
2016-04-11 08:35:30 +02:00
Pavel Drozd ba788eb678 KEYCLOAK-2794 - changed version of undertow-embedded. 2016-04-11 08:04:19 +02:00
Stian Thorgersen 01beff741d KEYCLOAK-2766 Add missing id to AuthenticatorConfigRepresentation 2016-04-11 07:42:55 +02:00
Stian Thorgersen 5b156595fb Merge pull request #2561 from vramik/KEYCLOAK-2783-2.x
KEYCLOAK-2783 added nexus-staging-maven-plugin
2016-04-11 07:14:45 +02:00
Stian Thorgersen 19deb7c65e Merge pull request #2562 from guusdk/KEYCLOAK-2785
KEYCLOAK-2785: Admin client should be able to delete a user.
2016-04-11 07:14:06 +02:00
Stian Thorgersen 58b66b788f Merge pull request #2558 from mhajas/js-console-stability-PR
KEYCLOAK-2780 Better stability in JSConsole test
2016-04-11 07:12:22 +02:00
Stian Thorgersen 0447d857fd Merge pull request #2556 from mhajas/secure-porta-PR
KEYCLOAK-2779 Fix DemoServletAdpater tests
2016-04-11 07:11:19 +02:00
Stian Thorgersen 42b00ae080 Merge pull request #2554 from mhajas/eap6URLs-PR
KEYCLOAK-2778 Fix urls on eap6
2016-04-11 07:09:48 +02:00
Chris Pitman eb8d02a691 KEYCLOAK-2791 - Proxy handling for X-Forwarded headers 2016-04-09 02:11:59 -04:00
Marek Posolda 1ba6a27d0e Merge pull request #2564 from mposolda/master
KEYCLOAK-2769 Fix NPE during 'Identity Broker cancelled' and instead …
2016-04-08 22:14:19 +02:00
mposolda ee9c87877f KEYCLOAK-2769 Fix NPE during 'Identity Broker cancelled' and instead show keycloak 'we are sorry' page 2016-04-08 19:07:06 +02:00
Guus der Kinderen 38670df49a KEYCLOAK-2785: Admin client should be able to delete a user.
The delete user service should be exposed in the admin client.
2016-04-08 16:34:46 +02:00
Vlasta Ramik 54e745c6c9 added nexus-staging-maven-plugin 2016-04-08 15:40:26 +02:00
mhajas d730da757e Better stability in JSConsole test 2016-04-08 13:55:33 +02:00
mhajas fbca45d336 Fix DemoServlet test 2016-04-08 13:38:42 +02:00
mhajas ff66d471e2 Fix timeouts in DemoServlets tests 2016-04-08 13:37:22 +02:00
mhajas c65a156939 Fix urls on eap6 2016-04-08 13:26:16 +02:00
Marek Posolda def40448ac Merge pull request #2553 from mposolda/master
KEYCLOAK-2614 Refactor database lock to use 'SELECT FOR UPDATE' pessi…
2016-04-08 13:18:46 +02:00
mposolda 90fc721315 KEYCLOAK-2614 Refactor database lock to use 'SELECT FOR UPDATE' pessimistic locking 2016-04-08 12:20:54 +02:00
Stian Thorgersen ed97a9b6f3 Merge pull request #2551 from stianst/KEYCLOAK-2683
KEYCLOAK-2683 Remove QRCodeResource and embed QR code in image
2016-04-08 09:53:28 +02:00
Stian Thorgersen 8ea057a122 KEYCLOAK-2683 Remove QRCodeResource and embed QR code in image 2016-04-08 09:00:57 +02:00
Stian Thorgersen 5167b623d5 Merge pull request #2548 from stianst/master
KEYCLOAK-2774
2016-04-08 06:59:55 +02:00
Stian Thorgersen 1e1bf97ffc KEYCLOAK-2774
Adapters logout section points to removed tokens endpoint
2016-04-08 06:59:39 +02:00
Stian Thorgersen ef1f34d933 Merge pull request #2544 from vmuzikar/master
KEYCLOAK-2772 Add deletion test to GroupTest
2016-04-08 06:51:29 +02:00
Stian Thorgersen 57a14627e1 Merge pull request #2543 from stianst/KEYCLOAK-2646
KEYCLOAK-2646 Admin console shows 'Page not found' after password reset
2016-04-07 19:37:01 +02:00
Stian Thorgersen 1cba5e5428 Merge pull request #2546 from grossws/fix-PR-2449
Revert accidentally removed ResteasyClient configuration in admin
2016-04-07 19:35:43 +02:00
Konstantin Gribov 974c5615af Revert accidentally removed ResteasyClient configuration in admin
Fixes accidentally removed in PR #2449 ResteasyClient pool size parameter in
`org.keycloak.admin.client.Keycloak`.
2016-04-07 20:24:57 +03:00
Vaclav Muzikar 861e44b9c8 KEYCLOAK-2772 Add deletion test to GroupTest 2016-04-07 18:03:51 +02:00
Stian Thorgersen c1a8e692d0 Merge pull request #2538 from stianst/KEYCLOAK-2751
KEYCLOAK-2751
2016-04-07 16:27:11 +02:00
Stian Thorgersen 2a9304eb79 KEYCLOAK-2646 Admin console shows 'Page not found' after password reset 2016-04-07 16:26:20 +02:00
Stian Thorgersen e8932bbea0 Merge pull request #2449 from grossws/KEYCLOAK-2236
KEYCLOAK-2236 add service account support to keycloak-admin-client
2016-04-07 15:45:10 +02:00
Stian Thorgersen 63ad95a766 Merge pull request #2539 from guusdk/KEYCLOAK-2767
KEYCLOAK-2767: Should return a primitive if possible.
2016-04-07 15:41:33 +02:00
Stian Thorgersen b6d861fea6 KEYCLOAK-2751
Separate HTTP status codes for REST API errors
2016-04-07 15:39:12 +02:00
Konstantin Gribov 96424536a7 Add service account support to Keycloak admin client
Added grant_type=client_credentials support to keycloak-admin-client
so `keycloak-admin-client` can be used with service client account.

Fixes #KEYCLOAK-2236
2016-04-07 15:24:07 +03:00
Stian Thorgersen b86f15f32a Merge pull request #2381 from thomasdarimont/issue/KEYCLOAK-2054
KEYCLOAK-2054 - Allow to configure proxy for auth-server requests in adapters.
2016-04-07 14:02:36 +02:00
Guus der Kinderen be578684b9 KEYCLOAK-2767: Should return a primitive if possible.
A JSON primitive is valid JSON. There is no need to construct a JSON object
just for the sake of being JSON complient. This keeps things nice and simple.
2016-04-07 13:19:29 +02:00
Thomas Darimont bccc5fa7b1 KEYCLOAK-2054 - Allow to configure proxy for auth-server requests in adapters.
Previously the adapter configuration did not support specifying a proxy
for auth-server requests issued via the Apache HTTP Client by Keycloak.
This made it very difficult to connect an Application with Keycloak
that was required to use a proxy.

Introduced new `proxy-url` attribute to the adapter configuration
which makes it possible to configure a proxy to be used for auth-server
requests. Proxy-Host, Proxy-Port and Proxy-Scheme are taken from the
configured proxy URL.
Note that proxies that require authentication are currently not supported.
2016-04-07 11:09:40 +02:00
Stian Thorgersen d98cd4235c Merge pull request #2535 from stianst/master
KEYCLOAK-2763
2016-04-07 09:37:00 +02:00
Stian Thorgersen 08a0862369 KEYCLOAK-2763
Document requirement to use a secure private network for clustering
2016-04-07 09:36:43 +02:00
Stian Thorgersen f2dd556323 Merge pull request #2532 from stianst/KEYCLOAK-2762
KEYCLOAK-2762 Renaming a realm without saving the form affects all li…
2016-04-07 09:34:35 +02:00
Stian Thorgersen 6dc1194247 Merge pull request #2508 from guusdk/KEYCLOAK-2731
KEYCLOAK-2731: Improve thread safety of TokenManager
2016-04-07 07:36:22 +02:00
Stian Thorgersen a7c956bf10 Merge pull request #2505 from guusdk/KEYCLOAK-2746
KEYCLOAK-2746: By default, allow for concurrent usage
2016-04-07 07:35:39 +02:00
Stian Thorgersen 0907feb508 Merge pull request #2446 from guusdk/KEYCLOAK-2726
KEYCLOAK-2726: Invalidate token upon failure
2016-04-07 07:24:03 +02:00
Stian Thorgersen 30e2709bd0 Merge pull request #2443 from guusdk/KEYCLOAK-2721
KEYCLOAK-2721: Do not recreate TokenService proxy
2016-04-07 07:20:46 +02:00
Stian Thorgersen f585f5dfc9 Merge pull request #2530 from stianst/KEYCLOAK-2761
KEYCLOAK-2761 Broken on/off switch at Client Mappers with specific wi…
2016-04-07 07:13:35 +02:00
Stian Thorgersen 61ae15cf56 KEYCLOAK-2762 Renaming a realm without saving the form affects all links in Console 2016-04-07 06:59:21 +02:00
Stian Thorgersen 139e19514b Merge pull request #2528 from stianst/KEYCLOAK-2760
KEYCLOAK-2760
2016-04-07 06:51:24 +02:00
Stian Thorgersen 19b82f00d4 Merge pull request #2527 from stianst/KEYCLOAK-2759
KEYCLOAK-2759 Fix error message when renaming realm to name that exists
2016-04-07 06:50:55 +02:00
Stian Thorgersen 623ec6c510 Merge pull request #2524 from stianst/KEYCLOAK-2758
KEYCLOAK-2758
2016-04-07 06:50:05 +02:00
Stian Thorgersen a1b6310777 Merge pull request #2523 from winfinit/master
added text wrapping in js-console example
2016-04-07 06:28:54 +02:00
Stian Thorgersen d395a9e318 KEYCLOAK-2761 Broken on/off switch at Client Mappers with specific window width 2016-04-07 06:18:40 +02:00
Stian Thorgersen 729d73bb17 KEYCLOAK-2760
Cannot delete a client template mapper with a little trash icon in heading
2016-04-07 06:06:55 +02:00
Stian Thorgersen 2694e003c4 KEYCLOAK-2759 Fix error message when renaming realm to name that exists 2016-04-07 06:00:31 +02:00
Stian Thorgersen 5854e44391 KEYCLOAK-2758
Weird behavior of add/remove button for 'Valid Redirect URIs' in a client settings form
2016-04-07 05:43:07 +02:00
Roman Jurkov 361f0b5048 added text wrapping in js-console example 2016-04-06 13:49:47 -04:00
Stian Thorgersen 8de8446cb5 Merge pull request #2520 from stianst/KEYCLOAK-2756
KEYCLOAK-2756
2016-04-06 19:25:53 +02:00
Stian Thorgersen 6ccf3549ad KEYCLOAK-2756
Renaming a realm breaks down the Clients
2016-04-06 15:18:49 +02:00
Marek Posolda c469109d22 Merge pull request #2517 from mposolda/master
KEYCLOAK-1982 Some builtin objects might be missing when import JSON exported from previous versions
2016-04-06 13:24:32 +02:00
Stian Thorgersen 8164c05cb8 Merge pull request #2519 from stianst/master
KEYCLOAK-2752
2016-04-06 13:19:42 +02:00
Stian Thorgersen b8c08d05bf KEYCLOAK-2752
Update documentation re directory for providers
2016-04-06 13:18:23 +02:00
Stian Thorgersen 0419bb2232 Merge pull request #2514 from stianst/KEYCLOAK-2590
KEYCLOAK-2590 Add custom rest endpoint to set time offset
2016-04-06 12:58:13 +02:00
mposolda 72371e5d76 KEYCLOAK-1982 Some builtin objects might be missing when import JSON exported from old versions 2016-04-06 11:43:58 +02:00
mposolda f0b168c18f Ensure KeycloakSessionFactory.close is called before shutdown of auth-server-undertow 2016-04-06 11:43:49 +02:00
mposolda 3d5055d920 KEYCLOAK-2737 Handle the databaseSchema: 'validate' against empty database 2016-04-06 11:43:41 +02:00
Stian Thorgersen 0fc4ca0d12 KEYCLOAK-2590 Add custom rest endpoint to set time offset 2016-04-06 11:14:37 +02:00
Stian Thorgersen 4db73942e6 Merge pull request #2512 from stianst/KEYCLOAK-2262
KEYCLOAK-2262
2016-04-06 11:12:02 +02:00
Stian Thorgersen 0c829cd605 KEYCLOAK-2262 Refactor realm resource provider, remove admin resource provider and added example 2016-04-06 10:24:30 +02:00
Pedro Igor e876a3c988 [KEYCLOAK-2262] - New SPIs to extend both Realm and Admin RESTful APIs 2016-04-06 09:43:24 +02:00
Stian Thorgersen 91cbfbd37f Merge pull request #2511 from stianst/KEYCLOAK-2748
KEYCLOAK-2748
2016-04-06 09:10:23 +02:00
Stian Thorgersen 4a285bae9b KEYCLOAK-2748
Mark modules as private
2016-04-06 08:07:33 +02:00
Guus der Kinderen 804dd13abd KEYCLOAK-2731: Improve thread safety of TokenManager
This commit guards access to the non-final fields of TokenManager by its intrinsic lock.
2016-04-05 15:01:37 +02:00
Stian Thorgersen 0d6c72a378 Merge pull request #2503 from stianst/KEYCLOAK-2707
KEYCLOAK-2707 Fix account management layout for medium size screens
2016-04-05 13:26:02 +02:00
Marek Posolda 17b84df631 Merge pull request #2507 from mposolda/master
KEYCLOAK-2623 Remove auth-server-url-for-backend-requests from adapters
2016-04-05 13:09:47 +02:00
mposolda 784b724fe0 Removed docker-cluster as integration-arquillian has support for clustering tests now 2016-04-05 11:45:34 +02:00
mposolda 65dc7ddb44 KEYCLOAK-2623 Remove auth-server-url-for-backend-requests from adapters 2016-04-05 11:43:41 +02:00
Guus der Kinderen 120b880427 KEYCLOAK-2746: By default, allow for concurrent usage
The nature of Keycloak makes it very plausible that it is used in
a concurrent setting. With that in mind, it would make sense to,
by default, allow for more than one concurrent Resteasy connection
in the admin client code.
2016-04-05 11:34:02 +02:00
Stian Thorgersen a4335c3eb8 Merge pull request #2502 from velias/KEYCLOAK-2670-master
KEYCLOAK-2670 for master - client app is able to push additional HTTP GET
2016-04-05 11:20:06 +02:00
Stian Thorgersen 373ded9761 Merge pull request #2500 from vmuzikar/master
KEYCLOAK-2745 More UI tests stabilization
2016-04-05 11:19:01 +02:00
Stian Thorgersen 3e9ae7aa82 Merge pull request #2498 from stianst/KEYCLOAK-2722
KEYCLOAK-2722 Check user session in token introspection endpoint
2016-04-05 11:18:32 +02:00
Vlastimil Elias 21a2a47172 KEYCLOAK-2670 - client app is able to push additional HTTP GET
parameters in initial OpenID auth request for use in Auth flows
2016-04-05 10:41:28 +02:00
Stian Thorgersen 92c1e01d0e KEYCLOAK-2707 Fix account management layout for medium size screens 2016-04-05 10:30:43 +02:00
Vaclav Muzikar 3dbf5ee389 KEYCLOAK-2745 More UI tests stabilization 2016-04-05 10:13:40 +02:00
Stian Thorgersen 55c5e9a381 KEYCLOAK-2722 Check user session in token introspection endpoint 2016-04-05 09:31:39 +02:00
Stian Thorgersen 1f26765546 Merge pull request #2496 from stianst/KEYCLOAK-2652
KEYCLOAK-2652 Added fasterxml modules to as7 adapter dist
2016-04-05 08:57:54 +02:00
Stian Thorgersen c4a11cd52a Merge pull request #2494 from stianst/KEYCLOAK-2711
KEYCLOAK-2711
2016-04-05 08:54:35 +02:00
Stian Thorgersen b924cf9e9f Merge pull request #2492 from stianst/KEYCLOAK-2704
KEYCLOAK-2704
2016-04-05 08:54:18 +02:00
Marek Posolda 1714422b10 Merge pull request #2487 from mposolda/master
databaseSchema option - proper support for "validate" for both JPA and Mongo
2016-04-05 08:48:33 +02:00
Stian Thorgersen 7cea4f6695 KEYCLOAK-2652 Added fasterxml modules to as7 adapter dist 2016-04-05 08:02:32 +02:00
Stian Thorgersen 85622ac522 KEYCLOAK-2711
Button for 'impersonate user' is visible when I am creating new user
2016-04-05 07:53:57 +02:00
Stian Thorgersen 48551d362a KEYCLOAK-2704
User count missing in REST admin endpoint
2016-04-05 07:48:20 +02:00
Bill Burke cee8fee504 Merge pull request #2490 from patriot1burke/master
KEYCLOAK-2669
2016-04-04 21:14:13 -04:00
Bill Burke 9a4308e092 fix again 2016-04-04 20:36:40 -04:00
Bill Burke 93b3f448d3 fix 2016-04-04 21:23:09 -04:00
Bill Burke 8beff63dc0 KEYCLOAK-2669 2016-04-04 21:12:55 -04:00
Bill Burke 6b5f26ab23 Merge pull request #2488 from patriot1burke/master
KEYCLOAK-2738
2016-04-04 18:54:46 -04:00
Bill Burke 4ed1061487 KEYCLOAK-2738 2016-04-04 18:47:11 -04:00
mposolda 3a8b450575 KEYCLOAK-2737 connectionsMongo: Support for 'databaseSchema: validate' 2016-04-04 22:24:33 +02:00
mposolda e6df30602e KEYCLOAK-2744 connectionsJpa: the databaseSchema 'validate' should check if database schema is updated to latest version 2016-04-04 22:24:25 +02:00
Bill Burke 72299b4844 Merge pull request #2481 from stianst/KEYCLOAK-2742
KEYCLOAK-2742
2016-04-04 12:54:22 -04:00
Stian Thorgersen 4e4559fdc2 Merge pull request #2484 from stianst/master
Minor update to themes README.txt
2016-04-04 15:26:29 +02:00
Stian Thorgersen dcdef4daa4 Minor update to themes README.txt 2016-04-04 15:26:04 +02:00
Stian Thorgersen 9299591272 KEYCLOAK-2742
Broken navigation links while creating/editing a Client Mapper
2016-04-04 15:17:15 +02:00
Stian Thorgersen 571a4389e9 Merge pull request #2479 from stianst/KEYCLOAK-2651
KEYCLOAK-2651
2016-04-04 10:05:00 +02:00
Stian Thorgersen 78b11bca84 Merge pull request #2477 from stianst/KEYCLOAK-2608
KEYCLOAK-2608
2016-04-04 10:04:45 +02:00
Stian Thorgersen ff73e1a36a KEYCLOAK-2651
No CSRF protection or general security headers on welcome page
2016-04-04 09:07:21 +02:00
Stian Thorgersen 134c9b11c0 KEYCLOAK-2608
Timestamp resolution of 1s for Event.time is inappropriate for use with tests
2016-04-04 08:30:01 +02:00
Bill Burke dfa7c76331 Merge pull request #2475 from patriot1burke/master
KEYCLOAK-2662
2016-04-01 17:55:42 -04:00
Bill Burke f21cede378 KEYCLOAK-2662 2016-04-01 16:43:38 -04:00
Bill Burke 80dfc63768 Merge pull request #2458 from vmuzikar/master
KEYCLOAK-2732
2016-04-01 16:03:01 -04:00
Bill Burke 29ffe96388 Merge pull request #2473 from patriot1burke/master
KEYCLOAK-2512
2016-04-01 16:01:53 -04:00
Bill Burke 4d5ae5dd68 KEYCLOAK-2512 2016-04-01 14:50:26 -04:00
Marek Posolda 6a3b5cd4c0 Merge pull request #2470 from mposolda/master
KEYCLOAK-2737 Remove 'databaseSchema' property from connectionsMongo
2016-04-01 18:48:42 +02:00
mposolda afd3a36ee4 KEYCLOAK-2737 Remove 'databaseSchema' property from connectionsMongo 2016-04-01 16:55:06 +02:00
Marek Posolda e02d0ed629 Merge pull request #2468 from mposolda/master
KEYCLOAK-2613 KEYCLOAK-2413 Export/import fixes and improvements
2016-04-01 16:46:17 +02:00
mposolda a4d9aaf916 KEYCLOAK-2613 Add version to RealmRepresentation in JSON exports 2016-04-01 16:04:58 +02:00
mposolda f83b67cdf5 KEYCLOAK-2413 Very slow export/import of realms with large users count 2016-04-01 16:04:48 +02:00
Marek Posolda 46f6b97c26 Merge pull request #2466 from mposolda/master
Fix LDAPGroupMapperTest with MSAD and Mongo
2016-04-01 11:22:56 +02:00
mposolda 5d7b549323 Fix LDAPGroupMapperTest with MSAD and Mongo 2016-04-01 10:44:35 +02:00
Marek Posolda 7f88e769f2 Merge pull request #2464 from mposolda/master
KEYCLOAK-2661 Broken migration from Keycloak 1.5 with Mongo 3
2016-04-01 09:28:29 +02:00
mposolda 36bc97e3cd KEYCLOAK-2661 Broken migration from Keycloak 1.5 with Mongo 3 2016-03-31 22:30:41 +02:00
Bill Burke 3b55bd08a6 Merge pull request #2462 from patriot1burke/master
KEYCLOAK-2621
2016-03-31 14:34:23 -04:00
Bill Burke d35ccd9a5e KEYCLOAK-2621 2016-03-31 14:33:41 -04:00
Bill Burke 0fea54ebb5 Merge pull request #2460 from patriot1burke/master
KEYCLOAK-2516
2016-03-31 13:58:06 -04:00
Bill Burke 7c9dbdfc91 KEYCLOAK-2516 2016-03-31 13:56:46 -04:00
Vaclav Muzikar 4ce8b2431b KEYCLOAK-2732 2016-03-31 18:16:03 +02:00
Marek Posolda e506e385f1 Merge pull request #2457 from mposolda/master
KEYCLOAK-2610 Performance improve - add more indexes to database
2016-03-31 13:36:07 +02:00
mposolda c52500ce88 KEYCLOAK-2610 Add more indexes to database 2016-03-31 11:50:02 +02:00
mposolda 6ab411b2de KEYCLOAK-2610 More operations added to ManyUsersTest 2016-03-31 11:49:51 +02:00
Bill Burke e7f7a5f6c8 Merge pull request #2454 from patriot1burke/master
KEYCLOAK-2716
2016-03-30 20:26:44 -04:00
Bill Burke d1552cd6e8 resolve conflict 2016-03-30 18:23:40 -04:00
Bill Burke 545fb8b849 KEYCLOAK-2716 2016-03-30 18:15:11 -04:00
Bill Burke f71a6ec904 Merge pull request #2452 from patriot1burke/master
KEYCLOAK-2490
2016-03-30 15:49:16 -04:00
Bill Burke e4fcaad243 Merge pull request #2450 from patriot1burke/master
KEYCLOAK-2691
2016-03-30 15:46:34 -04:00
Bill Burke 9cf788c590 KEYCLOAK-2490 2016-03-30 15:41:46 -04:00
Bill Burke 3d3d526e30 Merge pull request #2444 from mhajas/js-console-up-PR
KEYCLOAK-2725 Run js-console example on non-relative scanario + tests of implicit flow
2016-03-30 15:16:50 -04:00
Bill Burke 020d090aee Merge pull request #2430 from mstruk/assert-events
KEYCLOAK-2589 KEYCLOAK-2607 KEYCLOAK-2597 Port AssertEvents to integration-arquillian
2016-03-30 15:16:25 -04:00
Bill Burke 1d2fef5b9b Merge pull request #2447 from tkyjovsk/KEYCLOAK-2641-fix
KEYCLOAK-2641 fix
2016-03-30 15:15:54 -04:00
Bill Burke 2cc3588be5 Merge remote-tracking branch 'upstream/master' 2016-03-30 15:07:35 -04:00
Bill Burke 12bf4b498e KEYCLOAK-2691 2016-03-30 15:07:24 -04:00
Tomas Kyjovsky 6b6a673642 KEYCLOAK-2641 updated READMEs 2016-03-30 18:11:09 +02:00
Guus der Kinderen ad7a6c4854 KEYCLOAK-2726: Invalidate token upon failure
When a token managed by TokenManager is known to be invalid, it should no
longer be used. This commit adds a response listener to the only filter
using TokenManager, which causes, upon authentication failure, to
invalidate the token that was used.
2016-03-30 15:33:58 +02:00
Tomas Kyjovsky 47773371e3 KEYCLOAK-2641 Fixed location of module.xsl 2016-03-30 14:48:19 +02:00
mhajas d0aeb25f14 Run js-console example on non-relative scanario + tests of implicit flow 2016-03-30 11:52:05 +02:00
Guus der Kinderen 89158c9dcf KEYCLOAK-2721: Do not recreate TokenService proxy
By re-using the service proxy, classloading issues can be prevented.
2016-03-29 11:11:35 +02:00
Bill Burke dfc4cf36a2 Merge pull request #2441 from ssilvert/group-export
KEYCLOAK-2619: Partial Import doesn't support groups
2016-03-28 22:58:28 -04:00
Stan Silvert 0f52768064 KEYCLOAK-2619: Partial Import doesn't support groups 2016-03-28 14:26:34 -04:00
Bill Burke 2641a93943 Merge pull request #2439 from patriot1burke/master
KEYCLOAK-2718
2016-03-28 12:01:22 -04:00
Bill Burke 1dd4bdf0b7 KEYCLOAK-2718 2016-03-28 11:13:02 -04:00
Bill Burke 73d74f69c3 Merge pull request #2437 from patriot1burke/master
KEYCLOAK-2698
2016-03-28 10:21:54 -04:00
Bill Burke 28c70fa8ab KEYCLOAK-2698 2016-03-28 10:20:27 -04:00
Bill Burke 17fcc38157 Merge pull request #2426 from tkyjovsk/fail-if-no-tests-false
Arq. TestSuite Surefire config: failIfNoTests=false
2016-03-28 08:48:01 -04:00
Bill Burke add41ea92b Merge pull request #2435 from patriot1burke/master
KEYCLOAK-2584
2016-03-25 00:08:32 -04:00
Bill Burke e497eb0950 KEYCLOAK-2584 2016-03-24 21:26:09 -04:00
Bill Burke cb4f95416c Merge pull request #2433 from patriot1burke/master
KEYCLOAK-2624
2016-03-24 16:52:29 -04:00
Bill Burke b253fe9532 Merge remote-tracking branch 'upstream/master' 2016-03-24 15:57:01 -04:00
Bill Burke e2436c4722 KEYCLOAK-2624 2016-03-24 15:56:40 -04:00
Marko Strukelj 76a4db5d54 KEYCLOAK-2597 Invalid children group location header response 2016-03-24 17:13:00 +01:00
Marko Strukelj 790a068bdb KEYCLOAK-2607 Migrate Group tests to ARQ testsuite 2016-03-24 17:13:00 +01:00
Marko Strukelj 95d222348d KEYCLOAK-2589 Copy AssertEvents to Arquillian testsuite and modify to pull events from admin endpoints 2016-03-24 17:13:00 +01:00
Marek Posolda 7bdf9f4ba1 Merge pull request #2429 from mposolda/master
KEYCLOAK-2713 Fix error at startup
2016-03-24 16:12:06 +01:00
mposolda c9545e16f7 KEYCLOAK-2713 Fix error at startup 2016-03-24 15:30:53 +01:00
Tomas Kyjovsky f6dea6752c Arq. TestSuite Surefire config: failIfNoTests=false 2016-03-24 15:08:55 +01:00
Bill Burke 0f5caffbab Merge pull request #2421 from tkyjovsk/KEYCLOAK-2641
KEYCLOAK-2641 moved app-server configurations from adapter tests
2016-03-24 09:31:42 -04:00
Bill Burke 16061ec727 Merge pull request #2424 from patriot1burke/master
KEYCLOAK-2543
2016-03-24 09:30:39 -04:00
Bill Burke 6030a65d1b KEYCLOAK-2543 2016-03-24 08:49:08 -04:00
Marek Posolda 29c7cb9061 Merge pull request #2420 from mposolda/master
Fixes and performance improvements for "create user"
2016-03-24 11:58:38 +01:00
Tomas Kyjovsky a9c7bbd44c KEYCLOAK-2641 moved app-server configurations from adapter tests to servers/app-server module 2016-03-24 11:24:21 +01:00
mposolda c973dc9eee KEYCLOAK-2610 Ommit checks for default roles and groups during creation of user 2016-03-24 11:11:35 +01:00
mposolda 16ec76e864 KEYCLOAK-2712 Default required actions not added when user created through admin console 2016-03-24 11:11:35 +01:00
mposolda 20fe2b75b5 KEYCLOAK-2710 Improve hibernate statistics report 2016-03-24 11:11:35 +01:00
Martin Schmied d7fbfc05e8 Fix k_query_bearer_token endpoint in proxy
`org.keycloak.adapters.AuthenticatedActionsHandler` which handles token
requests performs blocking IO. However, the exchange is in non-blocking
mode when it reaches this handler in Keycloak proxy.
2016-03-24 09:32:55 +01:00
Stian Thorgersen 8f1292494f Merge pull request #2411 from vmuzikar/KEYCLOAK-2697
[KEYCLOAK-2697] Fix some UI tests stability
2016-03-24 08:19:45 +00:00
Stian Thorgersen 0ef36096fb Merge pull request #2407 from vmuzikar/KEYCLOAK-2694
[KEYCLOAK-2694] Add system property for test constants location
2016-03-24 08:18:31 +00:00
Stian Thorgersen 5181e95776 Merge pull request #2405 from vramik/KEYCLOAK-2676
KEYCLOAK-2676 - Review clients tests
2016-03-24 08:17:27 +00:00
Marek Posolda cc02b16742 Merge pull request #2415 from mposolda/master
DB tuning - step 1
2016-03-23 23:29:20 +01:00
mposolda 50f8846c3d KEYCLOAK-2610 Improve performance of creating users with MySQL 2016-03-23 22:36:31 +01:00
mposolda 22ce20ff6b KEYCLOAK-2710 Possibility to log some hibernate statistics 2016-03-23 22:36:31 +01:00
Marek Posolda 0dea5eac46 Merge pull request #2413 from mposolda/master
Caching of identityProvider links
2016-03-22 22:26:45 +01:00
mposolda f9595fc6c5 KEYCLOAK-2632 Remove flag from UserCacheSession.invalidateUsers 2016-03-22 21:39:35 +01:00
mposolda 4c6dd10e48 KEYCLOAK-2632 Caching of identity provider links 2016-03-22 21:39:35 +01:00
Vaclav Muzikar 25363a91f9 [KEYCLOAK-2697] Fix some UI tests stability 2016-03-22 13:57:23 +01:00
Marek Posolda 756cea5fb2 Merge pull request #2410 from mposolda/master
LDAP fixes
2016-03-22 13:43:12 +01:00
mposolda 7ffd6dc7a7 KEYCLOAK-2696 Unexpected error when trying to delete role mappings from read-only LDAP role mapper 2016-03-22 13:03:49 +01:00
mposolda 4a06d7590e KEYCLOAK-2682 NPE when LDAP groups points to non-existent user 2016-03-22 13:03:48 +01:00
Vaclav Muzikar 18b07190bf Add system property for test constants location
(cherry picked from commit f9afa13)
2016-03-22 12:17:13 +01:00
Vlasta Ramik 1cfe58bccd KEYCLOAK-2676 - Review clients tests 2016-03-22 11:57:41 +01:00
Stian Thorgersen 705a598ce6 Merge pull request #2402 from stianst/master
KEYCLOAK-2657 Remove copyright.txt and README.txt from server dist
2016-03-22 08:34:38 +00:00
Stian Thorgersen 23091ec738 KEYCLOAK-2657 Remove copyright.txt and README.txt from server dist 2016-03-22 07:28:45 +00:00
Stian Thorgersen 2c9172f707 Merge pull request #2399 from stianst/KEYCLOAK-2469
Keycloak 2469
2016-03-22 08:09:59 +01:00
Marek Posolda 741fa16ec7 Merge pull request #2401 from mposolda/master
Caching of user consents and serviceAccount links
2016-03-22 08:03:31 +01:00
mposolda 5c912d3501 KEYCLOAK-2631 Caching of service account links 2016-03-22 07:08:47 +01:00
mposolda e2e96f7183 KEYCLOAK-2630 Add caching for user consents 2016-03-22 07:07:42 +01:00
mposolda 4193856fbb KEYCLOAK-2687 ZIPException during import big number of users 2016-03-22 07:04:54 +01:00
Stian Thorgersen e56759a6c0 Merge pull request #2382 from jblashka/master
Fix JS error when working with theme i18n settings
2016-03-21 16:08:38 +01:00
Stian Thorgersen ce717fa20e KEYCLOAK-2469 Minor changes 2016-03-21 15:45:53 +01:00
Stian Thorgersen 204d226267 Merge branch 'issue/KEYCLOAK-2469' of https://github.com/thomasdarimont/keycloak into thomasdarimont-issue/KEYCLOAK-2469 2016-03-21 15:30:48 +01:00
Stian Thorgersen ca67e8a764 Merge pull request #2398 from vramik/master-KEYCLOAK-2690
KEYCLOAK-2690 - create page source file when test fails
2016-03-21 15:26:30 +01:00
Stian Thorgersen 60667e65e7 Merge pull request #2395 from mhajas/mellon-realm-PR
KEYCLOAK-2689 Modify mod_auth_mellon realm for rhel7
2016-03-21 15:21:26 +01:00
Stian Thorgersen 3b7101650e Merge pull request #2393 from mhajas/mellon-timeout-PR
KEYCLOAK-2688 Modified session length in mod_auth_mellon test
2016-03-21 15:21:00 +01:00
Stian Thorgersen 82300a90f8 Merge pull request #2388 from pdrozd/KEYCLOAK-2685
KEYCLOAK-2685 - Updated EAP7 namespaces
2016-03-21 15:20:26 +01:00
Jared Blashka 49c5610971 Remove admin theme from i18n consideration 2016-03-21 09:42:00 -04:00
Vlasta Ramik 75ef3efd15 create page source file when test fails 2016-03-21 14:19:11 +01:00
mhajas e7ec454f81 Modify realm for rhel7 2016-03-21 12:41:17 +01:00
mhajas a80a65c525 Modified session length 2016-03-21 12:32:51 +01:00
Stian Thorgersen 973619d7c0 Merge pull request #2380 from thomasdarimont/issue/KEYCLOAK-2664
KEYCLOAK-2664 - QRCodeResource should prohibit caching of the generated image
2016-03-21 10:38:39 +01:00
Stian Thorgersen 50ed089980 Merge pull request #2378 from vmuzikar/master
Add properties file for some "constants" used in integration tests
2016-03-21 10:37:29 +01:00
Stian Thorgersen 3e208c10aa Merge pull request #2389 from thomasdarimont/issue/KEYCLOAK-2686-migration-from-191-to-192
KEYCLOAK-2686 - Fix failing migration from 1.9.1 to 1.9.2.
2016-03-21 10:30:44 +01:00
Thomas Darimont fa8af64098 KEYCLOAK-2686 - Fix failing migration from 1.9.1 to 1.9.2.
Since the `Map` returned by `realm.getBrowserSecurityHeaders()` is unmodifiable
we need to add the new header setting to a copy of the map which we then set
on the realm.
2016-03-21 09:52:25 +01:00
Pavel Drozd c61b457c02 KEYCLOAK-2685 - Updated EAP7 namespaces 2016-03-21 08:48:47 +01:00
Marek Posolda 5c98b8c6ae Merge pull request #2384 from mposolda/master
KEYCLOAK-2681 JS adapter init function with initOptions argument does…
2016-03-18 14:16:51 +01:00
Thomas Darimont 3e6b6507f4 KEYCLOAK-2664 - QRCodeResource should prohibit caching of the generated image
Added cache-control headers to avoid caching for generated
QRCode images.

Adjusted CacheControlUtil#noCache() to avoid caching more aggressively.
2016-03-18 12:18:07 +01:00
Marek Posolda d285721063 Merge pull request #2383 from ratcashdev/master
Fix when importing empty uniqueMember attributes
2016-03-18 12:18:02 +01:00
mposolda 95a1fc32eb KEYCLOAK-2681 JS adapter init function with initOptions argument doesn't call success callback 2016-03-18 12:06:46 +01:00
ratcashdev 13d2f872ff KEYCLOAK-2679: Fix when importing empty uniqueMember attributes 2016-03-18 09:55:35 +01:00
Jared Blashka 7a05078030 Fix JS error when working with theme i18n 2016-03-16 18:28:06 -04:00
Vaclav Muzikar 5c3159c83d Merge with upstream 2016-03-14 16:09:56 +01:00
Marek Posolda f63655edf3 Merge pull request #2377 from mposolda/master
KEYCLOAK-2634 Better error reporting if password update failed due to…
2016-03-14 14:32:28 +01:00
mposolda 23aa490c72 KEYCLOAK-2634 Better error reporting if password update failed due to MSAD password policy 2016-03-14 13:36:20 +01:00
Marek Posolda 1691ae7e29 Merge pull request #2374 from mposolda/master
A bit more details about Kerberos and LDAP mappers in docs
2016-03-14 11:52:36 +01:00
mposolda 804fb2dc96 A bit more details about Kerberos and LDAP mappers in docs 2016-03-14 11:52:04 +01:00
Marek Posolda 975dcb68a9 Merge pull request #2373 from mposolda/master
LDAP fixes
2016-03-14 10:32:20 +01:00
mposolda e24ce91e81 KEYCLOAK-2659 Allow sync all roles even if there are more than 1000 2016-03-14 09:39:22 +01:00
mposolda 2d188068c4 KEYCLOAK-2644 Delete user with a READ_ONLY LDAP federation provider just from Keycloak DB 2016-03-14 09:39:14 +01:00
Marek Posolda 214cd2ac22 Merge pull request #2370 from mposolda/master
LDAP fixes
2016-03-11 23:12:06 +01:00
mposolda 1142ed5583 KEYCLOAK-2655 Support of lazy sync LDAP groups, which user is member of 2016-03-11 22:33:03 +01:00
mposolda 85ccd64e01 KEYCLOAK-2643 Added write-only property to LDAP full-name attribute mapper 2016-03-11 22:32:55 +01:00
mposolda 73c3534e7a KEYCLOAK-2629 LDAP Federation provider - input fields validation 2016-03-11 22:32:45 +01:00
mposolda c6a7d0b772 KEYCLOAK-2640 LDAP group sync does not sync more than 1000 groups 2016-03-11 22:32:35 +01:00
Stian Thorgersen 4f0d827aca Merge pull request #2368 from stianst/KEYCLOAK-2593
KEYCLOAK-2593 Character set missing from responses and no content sni…
2016-03-11 16:23:18 +01:00
Stian Thorgersen 7342261dbe KEYCLOAK-2593 Character set missing from responses and no content sniffing defense in place 2016-03-11 15:31:15 +01:00
Stian Thorgersen 8f2c5af7d1 Merge pull request #2365 from stianst/KEYCLOAK-2612
KEYCLOAK-2612 Set default eviction strategy for users cache
2016-03-11 15:23:56 +01:00
Stian Thorgersen 018b104cbf KEYCLOAK-2612 Set default eviction strategy for users cache 2016-03-11 13:01:57 +01:00
Stian Thorgersen b3bb68aed7 Merge pull request #2364 from stianst/KEYCLOAK-2637
KEYCLOAK-2637
2016-03-11 13:00:54 +01:00
Stian Thorgersen bdfc9b8efc KEYCLOAK-2637
ModelExceptionMapper uses AdminMessagesProvider which loads messages outside of themes
2016-03-11 12:08:28 +01:00
Stian Thorgersen 3b1987cb3a Merge pull request #2360 from stianst/KEYCLOAK-2636
KEYCLOAK-2636
2016-03-11 11:11:53 +01:00
Marek Posolda 18c0e8946a Merge pull request #2361 from mposolda/master
KEYCLOAK-2628 protected method to IdpCreateUserIfUniqueAuthenticator …
2016-03-11 11:08:17 +01:00
mposolda 25f965aa2e KEYCLOAK-2628 protected method to IdpCreateUserIfUniqueAuthenticator after user is registered 2016-03-11 10:05:41 +01:00
Stian Thorgersen 50e5d203b3 KEYCLOAK-2636
Tooltip for redirect uri is wrong
2016-03-11 06:39:25 +01:00
Thomas Darimont 41358eea4d KEYCLOAK-2469 - Introduced new redirect endpoint for clients.
Previously one had to configure hardcoded urls to link from one client
application to others since keycloak didn't provide a way to get the
actual client URL by providing clientId and realm information.

We now support a new endpoint with the path {realm}/clients/{client_id}/redirect
that responds to GET requests with a 307 (temporary redirect) with the
configured client URL. This allows to refer to any client just by the
realmName and clientId and let Keycloak redirect to the actual client
application.

Add documentation for new redirect endpoint.
2016-03-10 23:45:22 +01:00
Bill Burke 4b69cb4551 Merge pull request #2359 from patriot1burke/master
refactor user cache.
2016-03-10 14:15:37 -05:00
Bill Burke b0264d528d trace log 2016-03-10 13:29:05 -05:00
Bill Burke 82ad26189f refactor user cache 2016-03-10 13:01:21 -05:00
Bill Burke cd299c995b refactor cache 2016-03-10 13:01:20 -05:00
helio-frota 2ab8f320c3 minor update javascript adapter docs 2016-03-10 13:01:19 -05:00
Stian Thorgersen 36f2febde1 Next is 2.0.0.CR1 2016-03-10 13:01:18 -05:00
Stian Thorgersen dbc49dd742 Revert "Updated docs for KEYCLOAK-1020"
This reverts commit 6fe3a3da71.
2016-03-10 13:01:16 -05:00
Stian Thorgersen 55e9f2e21b Allow ignoring patterns in LogChecker 2016-03-10 13:01:16 -05:00
Bruno Oliveira dd3e6b29bf Let the admin manage her own account 2016-03-10 13:01:15 -05:00
Vlasta Ramik 81f1baff33 KEYCLOAK-2586 - fix URL providers on classpath for graphene 2.1.0.Aplha3 2016-03-10 13:01:14 -05:00
mposolda e3f24f58df Fix failing test 2016-03-10 13:01:13 -05:00
mposolda 1939f25a71 KEYCLOAK-2601 Fix incorrectly autodetected dialect with MSSQL2014 2016-03-10 13:01:12 -05:00
Stian Thorgersen 76df229967 Next is 1.9.2.Final 2016-03-10 13:01:10 -05:00
mposolda 3ce6deaa1b Log DB info in arquillian testsuite 2016-03-10 13:01:09 -05:00
mposolda 428b85f1f8 Disable DBLockTest for now 2016-03-10 13:01:08 -05:00
mposolda 89a1141f8d Added exclusion of old commons-io dependency as it's causing issues in some environments 2016-03-10 13:01:07 -05:00
mposolda 12e5dfa3e5 Fix DB2 2016-03-10 13:01:06 -05:00
mposolda 4ff4f69343 KEYCLOAK-2611 Keycloak fails to start with Oracle DB 2016-03-10 13:01:05 -05:00
Stian Thorgersen 06545f2543 KEYCLOAK-2596 Fix import with dir and ignore existing 2016-03-10 13:01:04 -05:00
Marek Baluch 9e836162b7 KPR-87 - Agreement on terms and conditions as part of authentication - Tests 2016-03-10 13:01:03 -05:00
mposolda 42f4e7fef8 KEYCLOAK-2583 Synchronize users after creating ldap federation provider 2016-03-10 13:01:02 -05:00
mposolda 0708bceea7 KEYCLOAK-2582 Wrong message after synchronization (removing user from ldap) 2016-03-10 13:01:01 -05:00
Dane Barentine f72b0f3f6d Use createCredential so that authentication will work with both 2.x and 3.x MongoDB servers 2016-03-10 13:01:00 -05:00
Tomas Kyjovsky a27fd7ae1f Added workaround for KEYCLOAK-2560 to jpa-performance tests.
Optional delete/reimport realm phases.
2016-03-10 13:00:59 -05:00
mhajas 768a3ab941 IPv6 in login events 2016-03-10 13:00:58 -05:00
mhajas 5790dd44a4 Make adapter tests run also on EAP6 and EAP7 2016-03-10 13:00:57 -05:00
Farana, Zdenek 3b44ebb6d9 Updated docs for KEYCLOAK-1020 2016-03-10 13:00:56 -05:00
mhajas d2b5cf08c6 IdpInitiated login unauthorized test 2016-03-10 13:00:55 -05:00
mposolda f8ec178fae KEYCLOAK-2529 More proper handling of DB errors during migration 2016-03-10 13:00:54 -05:00
mposolda 062c8a06ab Fix testsuite with mongo 2016-03-10 13:00:53 -05:00
mposolda 6a48e00039 Check performance of multiple get calls over cluster 2016-03-10 13:00:52 -05:00
mposolda 6d0e5d6ad1 KEYCLOAK-2529 Concurrent startup by more cluster nodes at the same time. Added DBLockProvider 2016-03-10 13:00:51 -05:00
Stian Thorgersen 001ae5146a KEYCLOAK-2605 Revert upgrade of Arquillian Graphene 2016-03-10 13:00:50 -05:00
Stan Silvert 23175bf925 Make imports in ServerInfoAdminResource explicitly point to the new
packages.
2016-03-10 13:00:49 -05:00
Stan Silvert cf10a09008 KEYCLOAK-2535: ClientResource endpoint tests 2016-03-10 13:00:48 -05:00
Bruno Oliveira 8a4a1660a4 Client registration won't compile without these changes 2016-03-10 13:00:47 -05:00
Stian Thorgersen 4e0e4df630 KEYCLOAK-2592 Set secure on OAuth_Token_Request_State cookie 2016-03-10 13:00:46 -05:00
Stian Thorgersen 0519f0fed5 KEYCLOAK-2592 Set http-only on OAuth_Token_Request_State cookie 2016-03-10 13:00:45 -05:00
Stian Thorgersen 36f64b2e23 Merge pull request #2358 from helio-frota/minor_update_docs
minor update javascript adapter docs
2016-03-10 13:50:24 +01:00
helio-frota 94a2c3ab0e minor update javascript adapter docs 2016-03-10 09:16:45 -03:00
Stian Thorgersen 28fe13a800 Next is 2.0.0.CR1 2016-03-10 08:13:00 +01:00
Stian Thorgersen b9fea7b143 Merge pull request #2357 from stianst/master
Fixes
2016-03-10 08:08:09 +01:00
Stian Thorgersen ae63830c22 Merge pull request #2355 from abstractj/KEYCLOAK-2633
Let the admin manage her own account
2016-03-10 07:30:49 +01:00
Stian Thorgersen 96967c0373 Merge pull request #2354 from vramik/KEYCLOAK-2586
KEYCLOAK-2586 - fix URL providers on classpath for graphene 2.1.0.Aplha3
2016-03-10 07:30:26 +01:00
Stian Thorgersen 6e0eb21428 Merge pull request #2352 from mposolda/master
KEYCLOAK-2601 Fix incorrectly autodetected dialect with MSSQL2014
2016-03-10 07:29:28 +01:00
Stian Thorgersen e295efed07 Revert "Updated docs for KEYCLOAK-1020"
This reverts commit 6fe3a3da71.
2016-03-10 07:28:45 +01:00
Stian Thorgersen cd2f6e83b3 Allow ignoring patterns in LogChecker 2016-03-10 07:28:45 +01:00
Stian Thorgersen d722e53108 Next is 1.9.2.Final 2016-03-10 07:28:27 +01:00
mposolda 28252e2409 Fix failing test 2016-03-09 16:49:01 +01:00
Bruno Oliveira 746d285c7b Let the admin manage her own account 2016-03-09 12:16:21 -03:00
Vlasta Ramik 32b29bb130 KEYCLOAK-2586 - fix URL providers on classpath for graphene 2.1.0.Aplha3 2016-03-09 13:58:07 +01:00
mposolda 583f8ad739 KEYCLOAK-2601 Fix incorrectly autodetected dialect with MSSQL2014 2016-03-09 11:56:31 +01:00
Stian Thorgersen 321b23a78d Merge pull request #2349 from mposolda/master
Log DB info in arquillian testsuite
2016-03-09 06:13:40 +01:00
mposolda bcace1eacf Log DB info in arquillian testsuite 2016-03-08 22:04:25 +01:00
Marek Posolda dad4945358 Merge pull request #2347 from mposolda/master
Disable DBLockTest for now
2016-03-08 17:57:13 +01:00
mposolda f914a30b6e Disable DBLockTest for now 2016-03-08 17:44:03 +01:00
Marek Posolda d65fb963e6 Merge pull request #2346 from mposolda/master
Added exclusion of old commons-io dependency as it's causing issues i…
2016-03-08 17:42:51 +01:00
mposolda 5772ea2b09 Added exclusion of old commons-io dependency as it's causing issues in some environments 2016-03-08 17:01:48 +01:00
Marek Posolda 620f22249a Merge pull request #2345 from mposolda/master
Fix DB2
2016-03-08 16:06:57 +01:00
mposolda 29052019c5 Fix DB2 2016-03-08 16:05:45 +01:00
Marek Posolda c17b70e454 Merge pull request #2344 from mposolda/master
KEYCLOAK-2611 Keycloak fails to start with Oracle DB
2016-03-08 14:35:43 +01:00
Stian Thorgersen 1199fa7f6d Merge pull request #2343 from stianst/KEYCLOAK-2596
KEYCLOAK-2596 Fix import with dir and ignore existing
2016-03-08 13:50:57 +01:00
Stian Thorgersen 4928f779f7 Merge pull request #2329 from mbaluch/master
KPR-87 - Agreement on terms and conditions as part of authentication …
2016-03-08 13:50:49 +01:00
mposolda 8371c256b2 KEYCLOAK-2611 Keycloak fails to start with Oracle DB 2016-03-08 13:49:19 +01:00
Marek Baluch fa0335613f KPR-87 - Agreement on terms and conditions as part of authentication - Tests 2016-03-08 10:32:25 +01:00
Stian Thorgersen dc1d0e7f44 KEYCLOAK-2596 Fix import with dir and ignore existing 2016-03-08 08:55:10 +01:00
Marek Posolda 229eca302f Merge pull request #2342 from mposolda/master
LDAP fixes
2016-03-08 08:46:28 +01:00
Stian Thorgersen 446c9fea4b Merge pull request #2340 from dbarentine/master
KEYCLOAK-2609 Use createCredential so that authentication will work with both 2.x a…
2016-03-08 07:54:46 +01:00
Stian Thorgersen 1d882cdb87 Merge pull request #2339 from tkyjovsk/jpa-performance
Added workaround for KEYCLOAK-2560 to jpa-performance tests.
2016-03-08 07:53:41 +01:00
Stian Thorgersen bdc5f1c185 Merge pull request #2335 from mhajas/master
Run adapter tests on EAP6/7 + test fixes
2016-03-08 07:53:11 +01:00
Stian Thorgersen 7b578b8c87 Merge pull request #2336 from byF/master
Updated docs for KEYCLOAK-1020
2016-03-08 07:52:40 +01:00
Stian Thorgersen 37f605de5b Merge pull request #2333 from mhajas/newSAMLTest
IdpInitiated login unauthorized test
2016-03-08 07:51:49 +01:00
mposolda 8d21cfc234 KEYCLOAK-2583 Synchronize users after creating ldap federation provider 2016-03-07 23:19:43 +01:00
mposolda df56265976 KEYCLOAK-2582 Wrong message after synchronization (removing user from ldap) 2016-03-07 23:19:43 +01:00
Dane Barentine 7be0b1c9f5 Use createCredential so that authentication will work with both 2.x and 3.x MongoDB servers 2016-03-07 10:14:00 -08:00
Tomas Kyjovsky 52f3693747 Added workaround for KEYCLOAK-2560 to jpa-performance tests.
Optional delete/reimport realm phases.
2016-03-07 18:10:12 +01:00
Marek Posolda 392b1f1e17 Merge pull request #2337 from mposolda/dblock2
KEYCLOAK-2529 More proper handling of DB errors during migration
2016-03-07 16:06:49 +01:00
mposolda ebb61c104b KEYCLOAK-2529 More proper handling of DB errors during migration 2016-03-07 15:19:12 +01:00
Farana, Zdenek 6fe3a3da71 Updated docs for KEYCLOAK-1020 2016-03-07 14:48:32 +01:00
Marek Posolda f597f163f7 Merge pull request #2334 from mposolda/dblock2
Fix testsuite with Mongo
2016-03-07 13:15:31 +01:00
mposolda 1ac0529d04 Fix testsuite with mongo 2016-03-07 12:21:43 +01:00
mposolda 3c60881d8c Check performance of multiple get calls over cluster 2016-03-07 12:21:43 +01:00
Marek Posolda 74ac00349e Merge pull request #2332 from mposolda/dblock2
KEYCLOAK-2529 Concurrent startup by more cluster nodes at the same ti…
2016-03-07 11:47:53 +01:00
mhajas 048c64b6bd IdpInitiated login unauthorized test 2016-03-07 11:23:36 +01:00
mhajas 5917d5885b Merge remote-tracking branch 'upstream/master' 2016-03-07 11:21:24 +01:00
mposolda 8da768a514 KEYCLOAK-2529 Concurrent startup by more cluster nodes at the same time. Added DBLockProvider 2016-03-07 10:34:30 +01:00
Stian Thorgersen ad63b18781 Merge pull request #2330 from stianst/KEYCLOAK-2605
KEYCLOAK-2605 Revert upgrade of Arquillian Graphene
2016-03-07 09:19:53 +01:00
Stian Thorgersen 95d5ce9dd4 KEYCLOAK-2605 Revert upgrade of Arquillian Graphene 2016-03-07 08:38:39 +01:00
Stian Thorgersen 56c3d53a24 Merge pull request #2324 from ssilvert/client-tests
KEYCLOAK-2535: ClientResource endpoint tests
2016-03-07 06:13:55 +01:00
Stian Thorgersen c91255f620 Merge pull request #2328 from abstractj/reg-cli-minor-fix
Client registration won't compile without these changes
2016-03-07 06:12:43 +01:00
Stian Thorgersen 4f047565fb Merge pull request #2326 from stianst/KEYCLOAK-2592
Keycloak 2592
2016-03-07 06:12:17 +01:00
Stan Silvert f65a053182 Make imports in ServerInfoAdminResource explicitly point to the new
packages.
2016-03-04 11:17:12 -05:00
Bill Burke b709ca96b1 Merge pull request #2327 from patriot1burke/master
cleanup cache
2016-03-04 11:08:50 -05:00
Bruno Oliveira 4a027d97b0 Client registration won't compile without these changes 2016-03-04 12:46:57 -03:00
Bill Burke 4be6dc2f0c cleanup cache 2016-03-04 10:30:48 -05:00
Stian Thorgersen 57b6ddbace KEYCLOAK-2592 Set secure on OAuth_Token_Request_State cookie 2016-03-04 14:22:48 +01:00
Stian Thorgersen bf38ec040f KEYCLOAK-2592 Set http-only on OAuth_Token_Request_State cookie 2016-03-04 13:43:00 +01:00
Stan Silvert 2c79456e72 KEYCLOAK-2535: ClientResource endpoint tests 2016-03-04 07:41:24 -05:00
Stian Thorgersen 8caad0118c Merge pull request #2322 from vramik/KEYCLOAK-2586
KEYCLOAK-2586 - Update arquillian component versions to make screensh…
2016-03-04 08:22:47 +01:00
Stian Thorgersen afdbdb285d Merge pull request #2323 from abstractj/KEYCLOAK-2585
KEYCLOAK-2585: Changes on Brute force messages
2016-03-04 08:18:16 +01:00
Bill Burke ad2638cc20 Merge pull request #2325 from jblashka/master
Increase CERTIFICATE column size
2016-03-03 20:26:43 -05:00
Jared Blashka 05c590ac88 Increase CERTIFICATE column size 2016-03-03 17:35:40 -05:00
Bruno Oliveira 8d6f71e7d1 KEYCLOAK-2585: Changes on Brute force messages 2016-03-03 10:11:03 -03:00
Vlasta Ramik 10e1b6206f KEYCLOAK-2586 - Update arquillian component versions to make screenshooter working 2016-03-03 13:39:10 +01:00
Marek Posolda 002074bb30 Merge pull request #2320 from mposolda/master
KEYCLOAK-2523 Fix concurrency tests with all databases by track trans…
2016-03-03 12:34:29 +01:00
Stian Thorgersen 375d4e9e83 Merge pull request #2321 from stianst/KEYCLOAK-2547
KEYCLOAK-2547 NPE in TokenEndpoint and InfinispanUserSessionProvider
2016-03-03 12:06:40 +01:00
mposolda 286de3e905 Fix failing test 2016-03-03 11:46:27 +01:00
mposolda a258dd51ee KEYCLOAK-2523 Fix concurrency tests with all databases by track transaction startup revision 2016-03-03 11:21:26 +01:00
Stian Thorgersen b4239c40c1 KEYCLOAK-2547 NPE in TokenEndpoint and InfinispanUserSessionProvider 2016-03-03 10:45:05 +01:00
Stian Thorgersen b6118a6705 Merge pull request #2319 from stianst/KEYCLOAK-2580
KEYCLOAK-2580 Failed to create execution flow
2016-03-03 10:33:42 +01:00
Stian Thorgersen 2bf3531c43 Merge pull request #2318 from stianst/KEYCLOAK-2577
KEYCLOAK-2577 Rollback session in KeycloakSessionServletFilter if not…
2016-03-03 10:33:29 +01:00
Stian Thorgersen 2d42ad9993 KEYCLOAK-2580 Failed to create execution flow 2016-03-03 09:18:48 +01:00
Stian Thorgersen 2edb7f6831 KEYCLOAK-2577 Rollback session in KeycloakSessionServletFilter if not committed by KeycloakTransactionCommitter 2016-03-03 08:59:19 +01:00
Stian Thorgersen 402feb9710 Merge pull request #2317 from stianst/KEYCLOAK-2576
KEYCLOAK-2576
2016-03-03 07:48:43 +01:00
Stian Thorgersen 13506bec82 Merge pull request #2316 from stianst/KEYCLOAK-2568
KEYCLOAK-2568 Add autocomplete=off to password and otp input fields
2016-03-03 07:28:25 +01:00
Stian Thorgersen 13b6c6f507 KEYCLOAK-2576 KEYCLOAK-2576
Changing locale on login screen doesn't affect current user
2016-03-03 07:06:10 +01:00
Stian Thorgersen 7b8869bde6 Removed english values from non-english messages bundles£ 2016-03-03 06:53:00 +01:00
Stian Thorgersen e4815cd103 Merge pull request #2314 from mstruk/admin-client
KEYCLOAK-2574 Add more admin-client authentication tests
2016-03-03 06:30:48 +01:00
Stian Thorgersen 4214793a2d KEYCLOAK-2568 Add autocomplete=off to password and otp input fields 2016-03-03 06:29:56 +01:00
Bill Burke 860b58552e Merge pull request #2315 from patriot1burke/master
concurrent transaction fix
2016-03-02 17:43:33 -05:00
Bill Burke a13bac4c9d concurrent transaction fix 2016-03-02 16:55:55 -05:00
Marko Strukelj c6fc7622d2 KEYCLOAK-2574 Add more admin-client authentication tests 2016-03-02 15:12:32 +01:00
Stian Thorgersen c584a1a161 Merge pull request #2313 from abstractj/documentation_updates
Inclusion of add user instructions for overlay
2016-03-02 14:52:54 +01:00
Bruno Oliveira b8c50c431c Inclusion of add user instructions for overlay 2016-03-02 10:14:41 -03:00
Stian Thorgersen cc776abacb Merge pull request #2311 from stianst/KEYCLOAK-2557
KEYCLOAK-2557
2016-03-02 08:50:55 +01:00
Stian Thorgersen fea5d5099d Merge pull request #2310 from stianst/KEYCLOAK-2570
KEYCLOAK-2570
2016-03-02 08:50:23 +01:00
Marek Posolda 95e1dedb32 Merge pull request #2306 from mposolda/mysql-concurrency
Added ConcurrentTransactionsTest
2016-03-02 08:14:40 +01:00
Stian Thorgersen 370b86141c KEYCLOAK-2557
Cannot login with email if another user is using this email as username
2016-03-02 08:08:48 +01:00
Stian Thorgersen 45b940ad2d Merge pull request #2308 from tkyjovsk/auth-server-eap7-cluster
KEYCLOAK-1679 Auth server eap7 cluster
2016-03-02 07:54:24 +01:00
Stian Thorgersen 8c3545d219 KEYCLOAK-2570
Login event error field typo (lower case)
2016-03-02 07:52:04 +01:00
Stian Thorgersen 2f3a1626d7 Merge pull request #2309 from tkyjovsk/console-ui-tests
KEYCLOAK-2570 disabled failing test
2016-03-02 07:26:45 +01:00
Stian Thorgersen 5d93f4a298 Merge pull request #2307 from stianst/KEYCLOAK-2566
KEYCLOAK-2566 kc-action-cell action buttons don't appear on IE
2016-03-02 07:04:42 +01:00
Tomas Kyjovsky 66a75d93ee KEYCLOAK-2570 disabled failing test 2016-03-01 23:08:19 +01:00
Tomas Kyjovsky e107a403cf Fixed & enabled SessionFailoverClusterTest by default 2016-03-01 21:44:46 +01:00
Stian Thorgersen 8270c0a19a KEYCLOAK-2566 kc-action-cell action buttons don't appear on IE 2016-03-01 19:58:11 +01:00
Stian Thorgersen db5efdca64 Merge pull request #2304 from stianst/KEYCLOAK-2513
KEYCLOAK-2513 Add test for direct grant with OTP
2016-03-01 19:33:45 +01:00
Stian Thorgersen 5eb319f3c5 Merge pull request #2303 from tkyjovsk/auth-server-jdk
Added property "auth.server.java.home" to the Arquillian testsuite.
2016-03-01 19:33:35 +01:00
Stian Thorgersen 6baa4a7950 Merge pull request #2302 from stianst/KEYCLOAK-2567
KEYCLOAK-2567 Order required actions alphabetically
2016-03-01 19:32:35 +01:00
Tomas Kyjovsky 73b6751219 KEYCLOAK-1679 added cluster profile for eap7 2016-03-01 16:13:12 +01:00
Tomas Kyjovsky c0de43d51f KEYCLOAK-1678 added cluster config to the EAP7 test server module 2016-03-01 16:12:59 +01:00
mposolda 5d9966f6df Ignore ConcurrentTransactionsTest as it's currently failing 2016-03-01 13:52:59 +01:00
mposolda 893fb2a55b Added ConcurrentTransactionsTest 2016-03-01 13:39:03 +01:00
Marek Posolda 4add134dff Merge pull request #2305 from mposolda/master
KEYCLOAK-2542 User can't set password for account created over social…
2016-03-01 11:54:52 +01:00
mhajas 7dc228beca IPv6 in login events 2016-03-01 11:42:16 +01:00
mposolda e6e367392a KEYCLOAK-2542 Fix tests 2016-03-01 10:52:35 +01:00
mposolda 0768bcc452 KEYCLOAK-2542 User can't set password for account created over social login if UserFedarationProvider used 2016-03-01 10:13:21 +01:00
Stian Thorgersen 4f8669d668 KEYCLOAK-2513 Add test for direct grant with OTP 2016-03-01 09:05:02 +01:00
Tomas Kyjovsky c65ed96bd7 Added property "auth.server.java.home" to the Arquillian testsuite. 2016-03-01 08:46:17 +01:00
Stian Thorgersen 7ad8a6e074 KEYCLOAK-2567 Order required actions alphabetically 2016-03-01 08:41:35 +01:00
Stian Thorgersen 2bddd9ad34 Merge pull request #2297 from tkyjovsk/console-ui-tests
Fixed admin console tests' compilation errors.
2016-03-01 08:00:46 +01:00
Stian Thorgersen ff9ebb0f79 Merge pull request #2294 from vramik/KEYCLOAK-2565
KEYCLOAK-2565 - Add assert check to testsuite for KEYCLOAK-2554 and ...
2016-03-01 08:00:23 +01:00
Bill Burke 09133a9e2a Merge pull request #2301 from patriot1burke/master
KEYCLOAK-2510
2016-02-29 20:51:34 -05:00
Bill Burke 32d15e2027 KEYCLOAK-2510 2016-02-29 20:39:44 -05:00
Bill Burke 8aa0727d88 Merge pull request #2300 from patriot1burke/master
KEYCLOAK-2536
2016-02-29 20:08:19 -05:00
Bill Burke c0d0c1f39a fix 2016-02-29 16:48:28 -05:00
Bill Burke 64daa568b9 KEYCLOAK-2536 2016-02-29 16:05:43 -05:00
Marek Posolda 47652ae179 Merge pull request #2298 from mposolda/master
KEYCLOAK-1928 Fix Saml with IBM JDK
2016-02-29 20:57:55 +01:00
mposolda e2558ca827 KEYCLOAK-1928 Fix Saml with IBM JDK 2016-02-29 17:32:33 +01:00
mhajas 5fb7e8186f Make adapter tests run also on EAP6 and EAP7 2016-02-29 17:23:27 +01:00
Tomas Kyjovsky e66060b00b Fixed admin console tests' compilation errors. 2016-02-29 17:13:08 +01:00
Bill Burke 84de9cca8e Merge pull request #2295 from patriot1burke/master
unsecure url has principal
2016-02-29 10:54:19 -05:00
Bill Burke 37584a24e0 unsecure url has principal
KEYCLOAK-2550
Typo in userguide

KEYCLOAK-1928 Kerberos working with IBM JDK

KEYCLOAK-1928 Remove sun.jdk.jgss module

KEYCLOAK-1928 Fix kerberos with adapter on JDK7

KPR-147 - Initial login scenarios around admin password - test

KEYCLOAK-2561 Fix issues with blank password

KEYCLOAK-2559 Missing add/remove button for 'Valid Redirect URIs' in a client settings form

Added simple test for JPA performance (with many users).

Fixed "re-import" operation logging.

Fixed for Timer.saveData()

Fixed for Timer.saveData()

ManyUsersTest: ArrayList --> LinkedList

Fix AbstractUserTest

Fix parentheses in login page object

Add tests for IDP initiated login

KEYCLOAK-1040
Allow import of realm keys (like we do for SAML)

KEYCLOAK-2556 Remove required for client create root url and saml endpoint

KEYCLOAK-2555 ForbiddenException when importing test realm or creating test user

KEYCLOAK-2553
Unexpected form behavior while creating a client

KEYCLOAK-2551
Broken navigation links while creating/editing a Client Mapper
2016-02-29 09:30:28 -05:00
Vlasta Ramik cfc61fa262 KEYCLOAK-2565 - Add assert check to testsuite for KEYCLOAK-2554 and KEYCLOAK-2555 2016-02-29 15:08:19 +01:00
Stian Thorgersen 4286f0560f Merge pull request #2293 from stianst/KEYCLOAK-2551
KEYCLOAK-2551
2016-02-29 14:06:46 +01:00
Stian Thorgersen 116d147bf7 Merge pull request #2292 from stianst/KEYCLOAK-2553
KEYCLOAK-2553
2016-02-29 14:06:13 +01:00
Stian Thorgersen a71adde8fa KEYCLOAK-2551
Broken navigation links while creating/editing a Client Mapper
2016-02-29 12:25:36 +01:00
Stian Thorgersen 45a03a654f KEYCLOAK-2553
Unexpected form behavior while creating a client
2016-02-29 12:05:20 +01:00
Stian Thorgersen 2154dd120b Merge pull request #2291 from stianst/KEYCLOAK-2555
KEYCLOAK-2555 ForbiddenException when importing test realm or creatin…
2016-02-29 12:00:44 +01:00
Stian Thorgersen 2a4dfe7920 Merge pull request #2290 from stianst/KEYCLOAK-2556
KEYCLOAK-2556 Remove required for client create root url and saml end…
2016-02-29 12:00:00 +01:00
Stian Thorgersen 5556736968 Merge pull request #2289 from stianst/KEYCLOAK-1040
KEYCLOAK-1040
2016-02-29 11:59:42 +01:00
Stian Thorgersen 24336bcd4d Merge pull request #2286 from mhajas/newSAMLTest
KEYCLOAK-2563 Add test for IDP initiated login
2016-02-29 11:59:35 +01:00
Stian Thorgersen 6fae1c6411 Merge pull request #2285 from mhajas/fixSAMLTest
Fix parentheses in login page object
2016-02-29 11:59:20 +01:00
Stian Thorgersen d7641f8830 Merge pull request #2282 from tkyjovsk/jpa-performance
Added some jpa perf tests (adding/removing many users)
2016-02-29 11:58:09 +01:00
Stian Thorgersen 24328fdc47 KEYCLOAK-2555 ForbiddenException when importing test realm or creating test user 2016-02-29 10:09:06 +01:00
Stian Thorgersen 4f46ab45cc KEYCLOAK-2556 Remove required for client create root url and saml endpoint 2016-02-29 09:48:15 +01:00
Stian Thorgersen ccfae82b77 KEYCLOAK-1040
Allow import of realm keys (like we do for SAML)
2016-02-29 09:35:08 +01:00
Stian Thorgersen 711e6a54ca Merge pull request #2283 from stianst/KEYCLOAK-2559
KEYCLOAK-2559 Missing add/remove button for 'Valid Redirect URIs' in …
2016-02-29 09:34:59 +01:00
Bill Burke 1d8f3d8702 Merge pull request #2288 from patriot1burke/master
clustered cache fixes
2016-02-26 18:22:38 -05:00
Bill Burke a0696fcb97 clustered testing 2016-02-26 16:45:58 -05:00
Bill Burke abddbfb3a4 clustered testing 2016-02-26 15:39:22 -05:00
Marek Posolda a97c4bdff9 Merge pull request #2287 from mposolda/master
KEYCLOAK-2561 Fix issues with blank password
2016-02-26 21:25:41 +01:00
mposolda e7a5b88b2d KEYCLOAK-2561 Fix issues with blank password 2016-02-26 18:14:37 +01:00
mhajas 4f0609f8b2 Add tests for IDP initiated login 2016-02-26 16:55:12 +01:00
mhajas e4d056f54b Fix parentheses in login page object 2016-02-26 16:50:00 +01:00
Tomas Kyjovsky a3f7339fca Fix AbstractUserTest 2016-02-26 14:57:28 +01:00
Vaclav Muzikar 2d7424c697 Add support for testing default theme name in prop file 2016-02-26 13:59:28 +01:00
Stian Thorgersen 57cd7e132c KEYCLOAK-2559 Missing add/remove button for 'Valid Redirect URIs' in a client settings form 2016-02-26 13:53:27 +01:00
Stian Thorgersen d766c56eba Merge pull request #2278 from mbaluch/master
KPR-147 - Initial login scenarios around admin password - test
2016-02-26 13:46:52 +01:00
Tomas Kyjovsky 0fa2b5c25d ManyUsersTest: ArrayList --> LinkedList 2016-02-26 12:34:39 +01:00
Vaclav Muzikar ddc0792733 Merge branch 'master' of https://github.com/keycloak/keycloak 2016-02-26 12:25:47 +01:00
Marek Baluch 072fe0d8a0 KPR-147 - Initial login scenarios around admin password - test 2016-02-26 12:21:51 +01:00
Marek Posolda 2ec355e2d2 Merge pull request #2281 from mposolda/master
KEYCLOAK-1928 Fix kerberos with adapter on JDK7
2016-02-26 11:36:04 +01:00
mposolda 94b3e85513 KEYCLOAK-1928 Fix kerberos with adapter on JDK7 2016-02-26 10:49:10 +01:00
Marek Posolda 4abcb2761f Merge pull request #2280 from mposolda/master
KEYCLOAK-1928 Kerberos working with IBM JDK
2016-02-26 10:13:14 +01:00
mposolda aae550a7c7 KEYCLOAK-1928 Remove sun.jdk.jgss module 2016-02-26 09:16:39 +01:00
mposolda 7f32ce810a KEYCLOAK-1928 Kerberos working with IBM JDK 2016-02-26 09:16:39 +01:00
Stian Thorgersen 13acd512b6 Merge pull request #2279 from stianst/master
KEYCLOAK-2550
2016-02-26 07:54:18 +01:00
Stian Thorgersen b94ced2204 KEYCLOAK-2550
Typo in userguide
2016-02-26 07:53:38 +01:00
Tomas Kyjovsky c59123e974 Fixed for Timer.saveData() 2016-02-26 03:21:15 +01:00
Tomas Kyjovsky ff2c100664 Fixed for Timer.saveData() 2016-02-26 03:20:57 +01:00
Tomas Kyjovsky 41949b63f6 Fixed "re-import" operation logging. 2016-02-26 02:31:51 +01:00
Tomas Kyjovsky aea35454bf Added simple test for JPA performance (with many users). 2016-02-26 02:24:20 +01:00
Vaclav Muzikar cd063c6a36 Add LDAP vendors test 2016-02-25 17:52:11 +01:00
Vaclav Muzikar a35aa47f27 Add support for some test constants in props file 2016-02-25 17:51:38 +01:00
Stian Thorgersen 25d183c1d9 Merge pull request #2277 from pedroigor/KEYCLOAK-2471
Updating xmlsec to 2.0.5
2016-02-25 16:28:56 +01:00
Pedro Igor 3b8364f1e6 Updating xmlsec to 2.0.5 2016-02-25 11:43:00 -03:00
Stian Thorgersen ca81f3f18d Merge pull request #2275 from stianst/KEYCLOAK-2511
KEYCLOAK-2511 Rename session-state in access token response to sessio…
2016-02-25 12:03:37 +01:00
Stian Thorgersen 6df72d67c5 Merge pull request #2274 from stianst/KEYCLOAK-2500
KEYCLOAK-2500 Add cors headers to .well-known endpoints
2016-02-25 12:03:25 +01:00
Stian Thorgersen f6c7ecf8e3 Merge pull request #2273 from stianst/KEYCLOAK-2522
KEYCLOAK-2522 master realm admin can't use client registration api
2016-02-25 12:03:07 +01:00
Stian Thorgersen d723efae77 Merge pull request #2276 from msavy/keycloak-update-docs
Update docs for move of themes and providers directories
2016-02-25 10:56:26 +01:00
Marc Savy b7f4d52de1 Update docs for change of themes and providers directories to reflect 1.9.x refactoring. 2016-02-25 09:50:11 +00:00
Stian Thorgersen 3ca39801dc KEYCLOAK-2511 Rename session-state in access token response to session_state 2016-02-25 10:14:12 +01:00
Stian Thorgersen da8f2dc2ce KEYCLOAK-2500 Add cors headers to .well-known endpoints 2016-02-25 10:05:46 +01:00
Stian Thorgersen 2fce06ffca KEYCLOAK-2522 master realm admin can't use client registration api 2016-02-25 09:54:34 +01:00
Stian Thorgersen 14ea988b24 Merge pull request #2267 from ssilvert/client-tests
KEYCLOAK-2533: Test values of events in LoginEventsTest
2016-02-25 08:50:09 +01:00
Bill Burke 5723baa367 Merge pull request #2272 from patriot1burke/master
group list caching
2016-02-24 18:31:25 -05:00
Bill Burke 450ce0e0e0 oops, showSql=false 2016-02-24 17:46:30 -05:00
Bill Burke 17ea3fca0b Merge remote-tracking branch 'upstream/master' 2016-02-24 17:21:25 -05:00
Bill Burke f10f00ba71 group list caching 2016-02-24 17:21:11 -05:00
Stian Thorgersen 8c73f8743d Merge pull request #2269 from stianst/KEYCLOAK-2539
KEYCLOAK-2539
2016-02-24 16:15:50 +01:00
Stian Thorgersen ab96114ef8 KEYCLOAK-2539
Migration fails if DisplayNameHtml is null for master realm
2016-02-24 06:59:32 +01:00
Bill Burke c45e40db99 Merge pull request #2268 from patriot1burke/master
query caches
2016-02-23 15:10:58 -05:00
Bill Burke 9488787986 Merge remote-tracking branch 'upstream/master' 2016-02-23 14:36:30 -05:00
Stan Silvert 64b2aed370 KEYCLOAK-2533: Test values of events in LoginEventsTest. Also do the same
for AdminEventTest.
2016-02-23 14:20:35 -05:00
Stian Thorgersen f63bb66170 Merge pull request #2266 from stianst/master
Added wallpaper svg
2016-02-23 20:09:04 +01:00
Stian Thorgersen 1957103270 Added wallpaper svg 2016-02-23 20:08:43 +01:00
Stan Silvert 3383b044b2 KEYCLOAK-2316: Sync admin client with endpoints for Client. First commit. 2016-02-23 13:29:12 -05:00
Stian Thorgersen f34260478e Merge pull request #2263 from vmuzikar/master
[KEYCLOAK-2532] Fix Console UI tests
2016-02-23 19:25:05 +01:00
Stian Thorgersen 4cf26a68fc Merge pull request #2264 from stianst/master
KEYCLOAK-2530
2016-02-23 19:24:30 +01:00
Stian Thorgersen 2c16335a03 Updated examples with moved themes directory 2016-02-23 15:30:50 +01:00
Stian Thorgersen af26b5b610 KEYCLOAK-2530
Missing IP address in Login Events
2016-02-23 14:33:30 +01:00
Stian Thorgersen eacd689f91 Merge pull request #2262 from stianst/master
KEYCLOAK-2527
2016-02-23 14:15:25 +01:00
Stian Thorgersen 023b558f43 KEYCLOAK-2527
Cordova not working
2016-02-23 13:32:00 +01:00
Vaclav Muzikar 8601b321d5 Fix InternationalizationTest 2016-02-23 13:22:56 +01:00
Vaclav Muzikar 83181f28b2 Swap 'expected' and 'actual' in URLAssert 2016-02-23 13:13:22 +01:00
Vaclav Muzikar 77c16c320e Fix LdapUserFederationTest 2016-02-23 12:58:39 +01:00
Vaclav Muzikar a6458250bc Merge branch 'master' of https://github.com/keycloak/keycloak 2016-02-23 12:11:17 +01:00
Marek Posolda 6654a154b9 Merge pull request #2259 from mposolda/master
Fix fuse adapter
2016-02-23 11:57:21 +01:00
mposolda 4d82cc92fe Fix fuse adapter 2016-02-23 11:19:34 +01:00
Stian Thorgersen 3e1976b3e5 Merge pull request #2255 from stianst/master
Next is 1.9.1.Final-SNAPSHOT
2016-02-23 10:59:53 +01:00
Marek Posolda 695f8d34ab Merge pull request #2257 from mposolda/master
KEYCLOAK-2526 JPA migration from 1.8.1 doesn't work
2016-02-23 10:37:53 +01:00
mposolda ad753a50a3 KEYCLOAK-2526 JPA migration from 1.8.1 doesn't work 2016-02-23 10:01:40 +01:00
Stian Thorgersen 0fc9cb78d5 KEYCLOAK-2525
Built-in themes not loaded from modules
2016-02-23 09:51:22 +01:00
Stian Thorgersen ec9c9b8ee1 Remove old logo from sunrise theme example 2016-02-23 09:06:51 +01:00
Bruno Oliveira 5ac3443729 Admin client example fails after login 2016-02-23 08:51:17 +01:00
Bruno Oliveira fac8c4a6d0 Angular Product raises an exception on logout 2016-02-23 08:49:58 +01:00
Bruno Oliveira d7f4277ba8 Admin cannot manage her own profile at Customer Portal app 2016-02-23 08:49:13 +01:00
Stian Thorgersen a1d9753ec2 Next is 1.9.1.Final-SNAPSHOT 2016-02-23 08:48:26 +01:00
Bill Burke 599faa454b Merge remote-tracking branch 'upstream/master' 2016-02-22 17:17:01 -05:00
Bill Burke 4dcdaf4985 role cached queries 2016-02-22 17:16:35 -05:00
Marek Posolda 03215787e0 Merge pull request #2250 from mposolda/master
Fix SyncFederationTest to work with MSSQL and envs with slower databases
2016-02-22 12:05:19 +01:00
mposolda 838764ba5a Fix SyncFederationTest to work with MSSQL and envs with slower databases 2016-02-22 12:04:27 +01:00
Stian Thorgersen 4fd97091ff Version bump to 2.0.0.CR1-SNAPSHOT 2016-02-22 11:36:56 +01:00
Bill Burke daa09f9a41 more fine tuning 2016-02-20 09:40:04 -05:00
Bill Burke 1511f7088f javadoc 2016-02-19 17:08:45 -05:00
Bill Burke 2e64d01251 reorg caching 2016-02-19 16:38:31 -05:00
Bill Burke c45524d8d4 caching 2016-02-19 15:44:19 -05:00
Vaclav Muzikar d3769caaac Add wait for body to AbstractPage.navigateTo
(cherry picked from commit aba731b)
2016-02-19 13:35:31 +01:00
Vaclav Muzikar 3a138db842 Fix UserAttributesTest
(cherry picked from commit 7ac10b3)
2016-02-19 12:51:11 +01:00
Vaclav Muzikar b41dd22ed3 Fix DefaultRolesTest
(cherry picked from commit 6e7470d)
2016-02-19 12:50:52 +01:00
Vaclav Muzikar c34aa5763d Fix TokensTest
(cherry picked from commit 32e6bb0)
2016-02-19 12:50:34 +01:00
Vaclav Muzikar 02851989b3 Fix SecurityDefensesTest
(cherry picked from commit 1973f02)
2016-02-19 12:50:11 +01:00
Vaclav Muzikar 9bde0af0f1 Fix InternationalizationTest
(cherry picked from commit d58a575)
2016-02-19 12:49:47 +01:00
Vaclav Muzikar 8006c64dba Add Alert assert messages
(cherry picked from commit 9f847fa)
2016-02-19 12:48:10 +01:00
Vaclav Muzikar 4b5fee02cc Fix AbstractClientTest.createClient
(cherry picked from commit 5ab40b0)
2016-02-19 12:47:59 +01:00
Vaclav Muzikar 1569cf7fb5 Fix ClientScopeForm
(cherry picked from commit 7edd674)
2016-02-19 12:47:29 +01:00
Vaclav Muzikar 5a0711655a Fix ClientCredentialsForm
(cherry picked from commit 3e825bf)
2016-02-19 12:47:08 +01:00
Vaclav Muzikar b5660cbbab Fix LoginActions.feedbackText selector
(cherry picked from commit d05f809)
2016-02-19 12:45:52 +01:00
Vaclav Muzikar ec2cfba670 Fix LoginForm.registerLink
(cherry picked from commit 6414232)
2016-02-19 12:45:01 +01:00
Vaclav Muzikar 97d0f39346 Fix getFeedbackText()
(cherry picked from commit 131b99b)
2016-02-19 12:42:31 +01:00
4689 changed files with 228403 additions and 107909 deletions

No files matched your search

+3
View File
@@ -45,3 +45,6 @@ catalog.xml
#########
target
# Maven shade
#############
*dependency-reduced-pom.xml
+15 -2
View File
@@ -1,9 +1,22 @@
language: java
cache:
directories:
- $HOME/.m2
before_cache:
- rm -rf $HOME/.m2/repository/org/keycloak
env:
global:
- MAVEN_SKIP_RC=true
- MAVEN_OPTS="-Xms512m -Xmx2048m"
matrix:
- TESTS=old
- TESTS=group1
- TESTS=group2
- TESTS=group3
- TESTS=adapter
jdk:
- oraclejdk8
@@ -12,9 +25,9 @@ before_script:
- export MAVEN_SKIP_RC=true
install:
- mvn install -Pdistribution -DskipTests=true -B -V -q
- travis_wait 60 mvn install -Pdistribution -DskipTests=true -B -V -q
script:
- mvn test -B
- ./travis-run-tests.sh $TESTS
sudo: false
+5 -4
View File
@@ -9,7 +9,7 @@ For more information about Keycloak visit [Keycloak homepage](http://keycloak.or
Building
--------
Ensure you have JDK 8 (or newer), Maven 3.2.1 (or newer) and Git installed
Ensure you have JDK 8 (or newer), Maven 3.1.1 (or newer) and Git installed
java -version
mvn -version
@@ -36,7 +36,7 @@ Once completed you will find distribution archives in `distribution`.
Starting Keycloak
-----------------
To start Keycloak during development first build as specficied above, then run:
To start Keycloak during development first build as specified above, then run:
mvn -f testsuite/integration/pom.xml exec:java -Pkeycloak-server
@@ -52,7 +52,7 @@ To stop the server press `Ctrl + C`.
Help and Documentation
----------------------
* [Documentation](http://keycloak.jboss.org/docs) - User Guide, Admin REST API and Javadocs
* [Documentation](http://www.keycloak.org/documentation.html) - User Guide, Admin REST API and Javadocs
* [User Mailing List](https://lists.jboss.org/mailman/listinfo/keycloak-user) - Mailing list to ask for help and general questions about Keycloak
* [JIRA](https://issues.jboss.org/projects/KEYCLOAK) - Issue tracker for bugs and feature requests
@@ -65,10 +65,11 @@ Contributing
* [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
* [Changing the Default keycloak-subsystem Configuration](misc/UpdatingServerConfig.md) - How to update the default keycloak-subsystem config
* [Developer Mailing List](https://lists.jboss.org/mailman/listinfo/keycloak-dev) - Mailing list to discuss development of Keycloak
License
-------
* [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
* [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+6 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -65,6 +65,11 @@
<artifactId>keycloak-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-authz-client</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
@@ -17,26 +17,21 @@
package org.keycloak.adapters;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.jboss.logging.Logger;
import org.keycloak.adapters.authentication.ClientCredentialsProvider;
import org.keycloak.adapters.authorization.PolicyEnforcer;
import org.keycloak.adapters.rotation.PublicKeyLocator;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.common.enums.RelativeUrlsUsed;
import org.keycloak.common.enums.SslRequired;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.enums.TokenStore;
import org.keycloak.representations.adapters.config.AdapterConfig;
import org.keycloak.representations.idm.PublishedRealmRepresentation;
import org.keycloak.util.JsonSerialization;
import org.keycloak.common.util.KeycloakUriBuilder;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.security.PublicKey;
import java.util.Map;
/**
@@ -57,7 +52,7 @@ public class AdapterDeploymentContext {
* during the application deployment's life cycle.
*
* @param deployment A KeycloakConfigResolver, possibly missing the Auth
* Server URL and/or Realm Public Key
* Server URL
*/
public AdapterDeploymentContext(KeycloakDeployment deployment) {
this.deployment = deployment;
@@ -79,7 +74,6 @@ public class AdapterDeploymentContext {
/**
* For single-tenant deployments, it complements KeycloakDeployment
* by resolving a relative Auth Server's URL based on the current request
* and, if needed, will lazily resolve the Realm's Public Key.
*
* For multi-tenant deployments, defers the resolution of KeycloakDeployment
* to the KeycloakConfigResolver .
@@ -98,8 +92,8 @@ public class AdapterDeploymentContext {
if (deployment.getAuthServerBaseUrl() == null) return deployment;
KeycloakDeployment resolvedDeployment = resolveUrls(deployment, facade);
if (resolvedDeployment.getRealmKey() == null) {
resolveRealmKey(resolvedDeployment);
if (resolvedDeployment.getPublicKeyLocator() == null) {
throw new RuntimeException("KeycloakDeployment was never initialized through appropriate SPIs");
}
return resolvedDeployment;
}
@@ -115,45 +109,6 @@ public class AdapterDeploymentContext {
}
}
public void resolveRealmKey(KeycloakDeployment deployment) {
if (deployment.getClient() == null) {
throw new RuntimeException("KeycloakDeployment was never initialized through appropriate SPIs");
}
HttpGet get = new HttpGet(deployment.getRealmInfoUrl());
try {
HttpResponse response = deployment.getClient().execute(get);
int status = response.getStatusLine().getStatusCode();
if (status != 200) {
close(response);
throw new RuntimeException("Unable to resolve realm public key remotely, status = " + status);
}
HttpEntity entity = response.getEntity();
if (entity == null) {
throw new RuntimeException("Unable to resolve realm public key remotely. There was no entity.");
}
InputStream is = entity.getContent();
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
int c;
while ((c = is.read()) != -1) {
os.write(c);
}
byte[] bytes = os.toByteArray();
String json = new String(bytes);
PublishedRealmRepresentation rep = JsonSerialization.readValue(json, PublishedRealmRepresentation.class);
deployment.setRealmKey(rep.getPublicKey());
} finally {
try {
is.close();
} catch (IOException ignored) {
}
}
} catch (IOException e) {
throw new RuntimeException("Unable to resolve realm public key remotely", e);
}
}
/**
* This delegate is used to store temporary, per-request metadata like request resolved URLs.
* Ever method is delegated except URL get methods and isConfigured()
@@ -169,11 +124,7 @@ public class AdapterDeploymentContext {
public void setAuthServerBaseUrl(String authServerBaseUrl) {
this.authServerBaseUrl = authServerBaseUrl;
KeycloakUriBuilder serverBuilder = KeycloakUriBuilder.fromUri(authServerBaseUrl);
resolveBrowserUrls(serverBuilder);
if (delegate.getRelativeUrls() == RelativeUrlsUsed.ALL_REQUESTS) {
resolveNonBrowserUrls(serverBuilder);
}
resolveUrls(serverBuilder);
}
@Override
@@ -211,6 +162,11 @@ public class AdapterDeploymentContext {
return (this.unregisterNodeUrl != null) ? this.unregisterNodeUrl : delegate.getUnregisterNodeUrl();
}
@Override
public String getJwksUrl() {
return (this.jwksUrl != null) ? this.jwksUrl : delegate.getJwksUrl();
}
@Override
public String getResourceName() {
return delegate.getResourceName();
@@ -227,13 +183,13 @@ public class AdapterDeploymentContext {
}
@Override
public PublicKey getRealmKey() {
return delegate.getRealmKey();
public void setPublicKeyLocator(PublicKeyLocator publicKeyLocator) {
delegate.setPublicKeyLocator(publicKeyLocator);
}
@Override
public void setRealmKey(PublicKey realmKey) {
delegate.setRealmKey(realmKey);
public PublicKeyLocator getPublicKeyLocator() {
return delegate.getPublicKeyLocator();
}
@Override
@@ -460,6 +416,36 @@ public class AdapterDeploymentContext {
public void setTurnOffChangeSessionIdOnLogin(boolean turnOffChangeSessionIdOnLogin) {
delegate.setTurnOffChangeSessionIdOnLogin(turnOffChangeSessionIdOnLogin);
}
@Override
public int getTokenMinimumTimeToLive() {
return delegate.getTokenMinimumTimeToLive();
}
@Override
public void setTokenMinimumTimeToLive(final int tokenMinimumTimeToLive) {
delegate.setTokenMinimumTimeToLive(tokenMinimumTimeToLive);
}
@Override
public PolicyEnforcer getPolicyEnforcer() {
return delegate.getPolicyEnforcer();
}
@Override
public void setPolicyEnforcer(PolicyEnforcer policyEnforcer) {
delegate.setPolicyEnforcer(policyEnforcer);
}
@Override
public void setMinTimeBetweenJwksRequests(int minTimeBetweenJwksRequests) {
delegate.setMinTimeBetweenJwksRequests(minTimeBetweenJwksRequests);
}
@Override
public int getMinTimeBetweenJwksRequests() {
return delegate.getMinTimeBetweenJwksRequests();
}
}
protected KeycloakUriBuilder getBaseBuilder(HttpFacade facade, String base) {
@@ -19,9 +19,7 @@ package org.keycloak.adapters;
import org.jboss.logging.Logger;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.representations.AccessToken;
import org.keycloak.common.util.UriUtils;
import java.util.Collections;
import java.util.Set;
@@ -38,37 +36,6 @@ public class AdapterUtils {
return UUID.randomUUID().toString();
}
/**
* Best effort to find origin for REST request calls from web UI application to REST application. In case of relative or absolute
* "auth-server-url" is returned the URL from request. In case of "auth-server-url-for-backend-request" used in configuration, it returns
* the origin of auth server.
*
* This may be the optimization in cluster, so if you have keycloak and applications on same host, the REST request doesn't need to
* go through loadbalancer, but can be sent directly to same host.
*
* @param browserRequestURL
* @param session
* @return
*/
public static String getOriginForRestCalls(String browserRequestURL, KeycloakSecurityContext session) {
if (session instanceof RefreshableKeycloakSecurityContext) {
KeycloakDeployment deployment = ((RefreshableKeycloakSecurityContext)session).getDeployment();
switch (deployment.getRelativeUrls()) {
case ALL_REQUESTS:
case NEVER:
// Resolve baseURI from the request
return UriUtils.getOrigin(browserRequestURL);
case BROWSER_ONLY:
// Resolve baseURI from the codeURL (This is already non-relative and based on our hostname)
return UriUtils.getOrigin(deployment.getTokenUrl());
default:
return "";
}
} else {
return UriUtils.getOrigin(browserRequestURL);
}
}
public static Set<String> getRolesFromSecurityContext(RefreshableKeycloakSecurityContext session) {
Set<String> roles = null;
AccessToken accessToken = session.getToken();
@@ -18,10 +18,12 @@
package org.keycloak.adapters;
import org.jboss.logging.Logger;
import org.keycloak.AuthorizationContext;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.authorization.PolicyEnforcer;
import org.keycloak.common.util.UriUtils;
import org.keycloak.constants.AdapterConstants;
import org.keycloak.representations.AccessToken;
import org.keycloak.common.util.UriUtils;
import java.io.IOException;
import java.util.Set;
@@ -55,6 +57,9 @@ public class AuthenticatedActionsHandler {
queryBearerToken();
return true;
}
if (!isAuthorized()) {
return true;
}
return false;
}
@@ -124,4 +129,28 @@ public class AuthenticatedActionsHandler {
}
return false;
}
private boolean isAuthorized() {
PolicyEnforcer policyEnforcer = this.deployment.getPolicyEnforcer();
if (policyEnforcer == null) {
log.debugv("Policy enforcement is disabled.");
return true;
}
try {
OIDCHttpFacade facade = (OIDCHttpFacade) this.facade;
AuthorizationContext authorizationContext = policyEnforcer.enforce(facade);
RefreshableKeycloakSecurityContext session = (RefreshableKeycloakSecurityContext) facade.getSecurityContext();
if (session != null) {
session.setAuthorizationContext(authorizationContext);
return authorizationContext.isGranted();
}
return true;
} catch (Exception e) {
throw new RuntimeException("Failed to enforce policy decisions.", e);
}
}
}
@@ -24,16 +24,17 @@ import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.jboss.logging.Logger;
import org.keycloak.OAuth2Constants;
import org.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.common.util.Base64;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.constants.ServiceUrlConstants;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.util.JsonSerialization;
import org.keycloak.common.util.KeycloakUriBuilder;
import java.util.List;
@@ -104,6 +105,7 @@ public class BasicAuthRequestAuthenticator extends BearerTokenRequestAuthenticat
int status = response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
if (status != 200) {
EntityUtils.consumeQuietly(entity);
throw new java.io.IOException("Bad status: " + status);
}
if (entity == null) {
@@ -18,7 +18,7 @@
package org.keycloak.adapters;
import org.jboss.logging.Logger;
import org.keycloak.RSATokenVerifier;
import org.keycloak.adapters.rotation.AdapterRSATokenVerifier;
import org.keycloak.adapters.spi.AuthChallenge;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.spi.HttpFacade;
@@ -84,7 +84,7 @@ public class BearerTokenRequestAuthenticator {
protected AuthOutcome authenticateToken(HttpFacade exchange, String tokenString) {
try {
token = RSATokenVerifier.verifyToken(tokenString, deployment.getRealmKey(), deployment.getRealmInfoUrl());
token = AdapterRSATokenVerifier.verifyToken(tokenString, deployment);
} catch (VerificationException e) {
log.error("Failed to verify token", e);
challenge = challengeResponse(exchange, OIDCAuthenticationError.Reason.INVALID_TOKEN, "invalid_token", e.getMessage());
@@ -17,19 +17,17 @@
package org.keycloak.adapters;
import java.io.IOException;
import org.jboss.logging.Logger;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.RSATokenVerifier;
import org.keycloak.adapters.rotation.AdapterRSATokenVerifier;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.common.VerificationException;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.constants.AdapterConstants;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.jose.jws.JWSInputException;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.IDToken;
import org.keycloak.common.util.KeycloakUriBuilder;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
@@ -73,7 +71,7 @@ public class CookieTokenStore {
try {
// Skip check if token is active now. It's supposed to be done later by the caller
AccessToken accessToken = RSATokenVerifier.verifyToken(accessTokenString, deployment.getRealmKey(), deployment.getRealmInfoUrl(), false, true);
AccessToken accessToken = AdapterRSATokenVerifier.verifyToken(accessTokenString, deployment, false, true);
IDToken idToken;
if (idTokenString != null && idTokenString.length() > 0) {
try {
@@ -0,0 +1,79 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpRequestBase;
import org.keycloak.util.JsonSerialization;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class HttpAdapterUtils {
public static <T> T sendJsonHttpRequest(KeycloakDeployment deployment, HttpRequestBase httpRequest, Class<T> clazz) throws HttpClientAdapterException {
try {
HttpResponse response = deployment.getClient().execute(httpRequest);
int status = response.getStatusLine().getStatusCode();
if (status != 200) {
close(response);
throw new HttpClientAdapterException("Unexpected status = " + status);
}
HttpEntity entity = response.getEntity();
if (entity == null) {
throw new HttpClientAdapterException("There was no entity.");
}
InputStream is = entity.getContent();
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
int c;
while ((c = is.read()) != -1) {
os.write(c);
}
byte[] bytes = os.toByteArray();
String json = new String(bytes);
return JsonSerialization.readValue(json, clazz);
} finally {
try {
is.close();
} catch (IOException ignored) {
}
}
} catch (IOException e) {
throw new HttpClientAdapterException("IO error", e);
}
}
private static void close(HttpResponse response) {
if (response.getEntity() != null) {
try {
response.getEntity().getContent().close();
} catch (IOException e) {
}
}
}
}
@@ -15,18 +15,18 @@
* limitations under the License.
*/
package org.keycloak.mappers;
package org.keycloak.adapters;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class MapperConfigValidationException extends Exception {
public class HttpClientAdapterException extends Exception {
public MapperConfigValidationException(String message) {
public HttpClientAdapterException(String message) {
super(message);
}
public MapperConfigValidationException(String message, Throwable cause) {
super(message, cause);
public HttpClientAdapterException(String message, Throwable t) {
super(message, t);
}
}
@@ -17,9 +17,11 @@
package org.keycloak.adapters;
import org.apache.http.HttpHost;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
@@ -34,9 +36,9 @@ import org.apache.http.impl.conn.SingleClientConnManager;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.keycloak.representations.adapters.config.AdapterConfig;
import org.keycloak.common.util.EnvUtil;
import org.keycloak.common.util.KeystoreUtil;
import org.keycloak.representations.adapters.config.AdapterHttpClientConfig;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
@@ -46,6 +48,7 @@ import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.IOException;
import java.net.URI;
import java.security.KeyStore;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
@@ -112,6 +115,7 @@ public class HttpClientBuilder {
protected TimeUnit socketTimeoutUnits = TimeUnit.MILLISECONDS;
protected long establishConnectionTimeout = -1;
protected TimeUnit establishConnectionTimeoutUnits = TimeUnit.MILLISECONDS;
protected HttpHost proxyHost;
/**
@@ -121,8 +125,7 @@ public class HttpClientBuilder {
* @param unit
* @return
*/
public HttpClientBuilder socketTimeout(long timeout, TimeUnit unit)
{
public HttpClientBuilder socketTimeout(long timeout, TimeUnit unit) {
this.socketTimeout = timeout;
this.socketTimeoutUnits = unit;
return this;
@@ -135,8 +138,7 @@ public class HttpClientBuilder {
* @param unit
* @return
*/
public HttpClientBuilder establishConnectionTimeout(long timeout, TimeUnit unit)
{
public HttpClientBuilder establishConnectionTimeout(long timeout, TimeUnit unit) {
this.establishConnectionTimeout = timeout;
this.establishConnectionTimeoutUnits = unit;
return this;
@@ -287,16 +289,20 @@ public class HttpClientBuilder {
cm = new SingleClientConnManager(registry);
}
BasicHttpParams params = new BasicHttpParams();
if (socketTimeout > -1)
{
if (proxyHost != null) {
params.setParameter(ConnRoutePNames.DEFAULT_PROXY, proxyHost);
}
if (socketTimeout > -1) {
HttpConnectionParams.setSoTimeout(params, (int) socketTimeoutUnits.toMillis(socketTimeout));
}
if (establishConnectionTimeout > -1)
{
HttpConnectionParams.setConnectionTimeout(params, (int)establishConnectionTimeoutUnits.toMillis(establishConnectionTimeout));
if (establishConnectionTimeout > -1) {
HttpConnectionParams.setConnectionTimeout(params, (int) establishConnectionTimeoutUnits.toMillis(establishConnectionTimeout));
}
DefaultHttpClient client = new DefaultHttpClient(cm, params);
if (disableCookieCache) {
client.setCookieStore(new CookieStore() {
@Override
@@ -327,7 +333,7 @@ public class HttpClientBuilder {
}
}
public HttpClient build(AdapterConfig adapterConfig) {
public HttpClient build(AdapterHttpClientConfig adapterConfig) {
disableCookieCache(); // disable cookie cache as we don't want sticky sessions for load balancing
String truststorePath = adapterConfig.getTruststore();
@@ -364,6 +370,28 @@ public class HttpClientBuilder {
} else {
trustStore(truststore);
}
configureProxyForAuthServerIfProvided(adapterConfig);
return build();
}
/**
* Configures a the proxy to use for auth-server requests if provided.
* <p>
* If the given {@link AdapterHttpClientConfig} contains the attribute {@code proxy-url} we use the
* given URL as a proxy server, otherwise the proxy configuration is ignored.
* </p>
*
* @param adapterConfig
*/
private void configureProxyForAuthServerIfProvided(AdapterHttpClientConfig adapterConfig) {
if (adapterConfig == null || adapterConfig.getProxyUrl() == null || adapterConfig.getProxyUrl().trim().isEmpty()) {
return;
}
URI uri = URI.create(adapterConfig.getProxyUrl());
this.proxyHost = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
}
}
@@ -20,15 +20,16 @@ package org.keycloak.adapters;
import org.apache.http.client.HttpClient;
import org.jboss.logging.Logger;
import org.keycloak.adapters.authentication.ClientCredentialsProvider;
import org.keycloak.constants.ServiceUrlConstants;
import org.keycloak.adapters.authorization.PolicyEnforcer;
import org.keycloak.adapters.rotation.PublicKeyLocator;
import org.keycloak.common.enums.RelativeUrlsUsed;
import org.keycloak.common.enums.SslRequired;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.constants.ServiceUrlConstants;
import org.keycloak.enums.TokenStore;
import org.keycloak.representations.adapters.config.AdapterConfig;
import org.keycloak.common.util.KeycloakUriBuilder;
import java.net.URI;
import java.security.PublicKey;
import java.util.HashMap;
import java.util.Map;
@@ -42,7 +43,7 @@ public class KeycloakDeployment {
protected RelativeUrlsUsed relativeUrls;
protected String realm;
protected volatile PublicKey realmKey;
protected PublicKeyLocator publicKeyLocator;
protected String authServerBaseUrl;
protected String realmInfoUrl;
protected KeycloakUriBuilder authUrl;
@@ -51,6 +52,7 @@ public class KeycloakDeployment {
protected String accountUrl;
protected String registerNodeUrl;
protected String unregisterNodeUrl;
protected String jwksUrl;
protected String principalAttribute = "sub";
protected String resourceName;
@@ -77,12 +79,15 @@ public class KeycloakDeployment {
protected boolean turnOffChangeSessionIdOnLogin;
protected volatile int notBefore;
protected int tokenMinimumTimeToLive;
protected int minTimeBetweenJwksRequests;
private PolicyEnforcer policyEnforcer;
public KeycloakDeployment() {
}
public boolean isConfigured() {
return getRealm() != null && getRealmKey() != null && (isBearerOnly() || getAuthServerBaseUrl() != null);
return getRealm() != null && getPublicKeyLocator() != null && (isBearerOnly() || getAuthServerBaseUrl() != null);
}
public String getResourceName() {
@@ -97,12 +102,12 @@ public class KeycloakDeployment {
this.realm = realm;
}
public PublicKey getRealmKey() {
return realmKey;
public PublicKeyLocator getPublicKeyLocator() {
return publicKeyLocator;
}
public void setRealmKey(PublicKey realmKey) {
this.realmKey = realmKey;
public void setPublicKeyLocator(PublicKeyLocator publicKeyLocator) {
this.publicKeyLocator = publicKeyLocator;
}
public String getAuthServerBaseUrl() {
@@ -111,39 +116,17 @@ public class KeycloakDeployment {
public void setAuthServerBaseUrl(AdapterConfig config) {
this.authServerBaseUrl = config.getAuthServerUrl();
String authServerURLForBackendReqs = config.getAuthServerUrlForBackendRequests();
if (authServerBaseUrl == null && authServerURLForBackendReqs == null) return;
if (authServerBaseUrl == null) return;
URI authServerUri = null;
if (authServerBaseUrl != null) {
authServerUri = URI.create(authServerBaseUrl);
}
URI authServerUri = URI.create(authServerBaseUrl);
if (authServerUri == null || authServerUri.getHost() == null) {
if (authServerURLForBackendReqs != null) {
relativeUrls = RelativeUrlsUsed.BROWSER_ONLY;
KeycloakUriBuilder serverBuilder = KeycloakUriBuilder.fromUri(authServerURLForBackendReqs);
if (serverBuilder.getHost() == null || serverBuilder.getScheme() == null) {
throw new IllegalStateException("Relative URL not supported for auth-server-url-for-backend-requests option. URL used: "
+ authServerURLForBackendReqs + ", Client: " + config.getResource());
}
resolveNonBrowserUrls(serverBuilder);
} else {
relativeUrls = RelativeUrlsUsed.ALL_REQUESTS;
}
if (authServerUri.getHost() == null) {
relativeUrls = RelativeUrlsUsed.ALWAYS;
} else {
// We have absolute URI in config
relativeUrls = RelativeUrlsUsed.NEVER;
KeycloakUriBuilder serverBuilder = KeycloakUriBuilder.fromUri(authServerBaseUrl);
resolveBrowserUrls(serverBuilder);
if (authServerURLForBackendReqs == null) {
resolveNonBrowserUrls(serverBuilder);
} else {
serverBuilder = KeycloakUriBuilder.fromUri(authServerURLForBackendReqs);
resolveNonBrowserUrls(serverBuilder);
}
resolveUrls(serverBuilder);
}
}
@@ -152,29 +135,21 @@ public class KeycloakDeployment {
/**
* @param authUrlBuilder absolute URI
*/
protected void resolveBrowserUrls(KeycloakUriBuilder authUrlBuilder) {
protected void resolveUrls(KeycloakUriBuilder authUrlBuilder) {
if (log.isDebugEnabled()) {
log.debug("resolveBrowserUrls");
log.debug("resolveUrls");
}
String login = authUrlBuilder.clone().path(ServiceUrlConstants.AUTH_PATH).build(getRealm()).toString();
authUrl = KeycloakUriBuilder.fromUri(login);
realmInfoUrl = authUrlBuilder.clone().path(ServiceUrlConstants.REALM_INFO_PATH).build(getRealm()).toString();
}
/**
* @param authUrlBuilder absolute URI
*/
protected void resolveNonBrowserUrls(KeycloakUriBuilder authUrlBuilder) {
if (log.isDebugEnabled()) {
log.debug("resolveNonBrowserUrls");
}
tokenUrl = authUrlBuilder.clone().path(ServiceUrlConstants.TOKEN_PATH).build(getRealm()).toString();
logoutUrl = KeycloakUriBuilder.fromUri(authUrlBuilder.clone().path(ServiceUrlConstants.TOKEN_SERVICE_LOGOUT_PATH).build(getRealm()).toString());
accountUrl = authUrlBuilder.clone().path(ServiceUrlConstants.ACCOUNT_SERVICE_PATH).build(getRealm()).toString();
registerNodeUrl = authUrlBuilder.clone().path(ServiceUrlConstants.CLIENTS_MANAGEMENT_REGISTER_NODE_PATH).build(getRealm()).toString();
unregisterNodeUrl = authUrlBuilder.clone().path(ServiceUrlConstants.CLIENTS_MANAGEMENT_UNREGISTER_NODE_PATH).build(getRealm()).toString();
jwksUrl = authUrlBuilder.clone().path(ServiceUrlConstants.JWKS_URL).build(getRealm()).toString();
}
public RelativeUrlsUsed getRelativeUrls() {
@@ -209,6 +184,10 @@ public class KeycloakDeployment {
return unregisterNodeUrl;
}
public String getJwksUrl() {
return jwksUrl;
}
public void setResourceName(String resourceName) {
this.resourceName = resourceName;
}
@@ -388,4 +367,28 @@ public class KeycloakDeployment {
public void setTurnOffChangeSessionIdOnLogin(boolean turnOffChangeSessionIdOnLogin) {
this.turnOffChangeSessionIdOnLogin = turnOffChangeSessionIdOnLogin;
}
public int getTokenMinimumTimeToLive() {
return tokenMinimumTimeToLive;
}
public void setTokenMinimumTimeToLive(final int tokenMinimumTimeToLive) {
this.tokenMinimumTimeToLive = tokenMinimumTimeToLive;
}
public int getMinTimeBetweenJwksRequests() {
return minTimeBetweenJwksRequests;
}
public void setMinTimeBetweenJwksRequests(int minTimeBetweenJwksRequests) {
this.minTimeBetweenJwksRequests = minTimeBetweenJwksRequests;
}
public void setPolicyEnforcer(PolicyEnforcer policyEnforcer) {
this.policyEnforcer = policyEnforcer;
}
public PolicyEnforcer getPolicyEnforcer() {
return policyEnforcer;
}
}
@@ -21,10 +21,14 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.jboss.logging.Logger;
import org.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
import org.keycloak.adapters.authorization.PolicyEnforcer;
import org.keycloak.adapters.rotation.HardcodedPublicKeyLocator;
import org.keycloak.adapters.rotation.JWKPublicKeyLocator;
import org.keycloak.common.enums.SslRequired;
import org.keycloak.common.util.PemUtils;
import org.keycloak.enums.TokenStore;
import org.keycloak.representations.adapters.config.AdapterConfig;
import org.keycloak.common.util.PemUtils;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig;
import org.keycloak.util.SystemPropertiesJsonParserFactory;
import java.io.IOException;
@@ -57,11 +61,16 @@ public class KeycloakDeploymentBuilder {
PublicKey realmKey;
try {
realmKey = PemUtils.decodePublicKey(realmKeyPem);
HardcodedPublicKeyLocator pkLocator = new HardcodedPublicKeyLocator(realmKey);
deployment.setPublicKeyLocator(pkLocator);
} catch (Exception e) {
throw new RuntimeException(e);
}
deployment.setRealmKey(realmKey);
} else {
JWKPublicKeyLocator pkLocator = new JWKPublicKeyLocator();
deployment.setPublicKeyLocator(pkLocator);
}
if (adapterConfig.getSslRequired() != null) {
deployment.setSslRequired(SslRequired.valueOf(adapterConfig.getSslRequired().toUpperCase()));
} else {
@@ -94,6 +103,8 @@ public class KeycloakDeploymentBuilder {
deployment.setAlwaysRefreshToken(adapterConfig.isAlwaysRefreshToken());
deployment.setRegisterNodeAtStartup(adapterConfig.isRegisterNodeAtStartup());
deployment.setRegisterNodePeriod(adapterConfig.getRegisterNodePeriod());
deployment.setTokenMinimumTimeToLive(adapterConfig.getTokenMinimumTimeToLive());
deployment.setMinTimeBetweenJwksRequests(adapterConfig.getMinTimeBetweenJwksRequests());
if (realmKeyPem == null && adapterConfig.isBearerOnly() && adapterConfig.getAuthServerUrl() == null) {
throw new IllegalArgumentException("For bearer auth, you must set the realm-public-key or auth-server-url");
@@ -102,13 +113,19 @@ public class KeycloakDeploymentBuilder {
deployment.setClient(new HttpClientBuilder().build(adapterConfig));
}
if (adapterConfig.getAuthServerUrl() == null && (!deployment.isBearerOnly() || realmKeyPem == null)) {
throw new RuntimeException("You must specify auth-url");
throw new RuntimeException("You must specify auth-server-url");
}
deployment.setAuthServerBaseUrl(adapterConfig);
if (adapterConfig.getTurnOffChangeSessionIdOnLogin() != null) {
deployment.setTurnOffChangeSessionIdOnLogin(adapterConfig.getTurnOffChangeSessionIdOnLogin());
}
PolicyEnforcerConfig policyEnforcerConfig = adapterConfig.getPolicyEnforcerConfig();
if (policyEnforcerConfig != null) {
deployment.setPolicyEnforcer(new PolicyEnforcer(deployment, adapterConfig));
}
log.debug("Use authServerUrl: " + deployment.getAuthServerBaseUrl() + ", tokenUrl: " + deployment.getTokenUrl() + ", relativeUrls: " + deployment.getRelativeUrls());
return deployment;
}
@@ -17,6 +17,10 @@
package org.keycloak.adapters;
import org.jboss.logging.Logger;
import org.keycloak.common.util.HostUtils;
import org.keycloak.common.util.Time;
import java.io.IOException;
import java.util.Collection;
import java.util.Map;
@@ -24,10 +28,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import org.jboss.logging.Logger;
import org.keycloak.common.util.HostUtils;
import org.keycloak.common.util.Time;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
@@ -19,12 +19,14 @@ package org.keycloak.adapters;
import org.jboss.logging.Logger;
import org.keycloak.OAuth2Constants;
import org.keycloak.RSATokenVerifier;
import org.keycloak.adapters.rotation.AdapterRSATokenVerifier;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.adapters.spi.AuthChallenge;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.common.VerificationException;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.common.util.UriUtils;
import org.keycloak.constants.AdapterConstants;
import org.keycloak.enums.TokenStore;
import org.keycloak.jose.jws.JWSInput;
@@ -32,8 +34,7 @@ import org.keycloak.jose.jws.JWSInputException;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.representations.IDToken;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.common.util.UriUtils;
import org.keycloak.util.TokenUtil;
import java.io.IOException;
import java.util.concurrent.atomic.AtomicLong;
@@ -159,6 +160,12 @@ public class OAuthRequestAuthenticator {
String scope = getQueryParamValue(OAuth2Constants.SCOPE);
url = UriUtils.stripQueryParam(url, OAuth2Constants.SCOPE);
String prompt = getQueryParamValue(OAuth2Constants.PROMPT);
url = UriUtils.stripQueryParam(url, OAuth2Constants.PROMPT);
String maxAge = getQueryParamValue(OAuth2Constants.MAX_AGE);
url = UriUtils.stripQueryParam(url, OAuth2Constants.MAX_AGE);
KeycloakUriBuilder redirectUriBuilder = deployment.getAuthUrl().clone()
.queryParam(OAuth2Constants.RESPONSE_TYPE, OAuth2Constants.CODE)
.queryParam(OAuth2Constants.CLIENT_ID, deployment.getResourceName())
@@ -171,9 +178,15 @@ public class OAuthRequestAuthenticator {
if (idpHint != null && idpHint.length() > 0) {
redirectUriBuilder.queryParam(AdapterConstants.KC_IDP_HINT,idpHint);
}
if (scope != null && scope.length() > 0) {
redirectUriBuilder.queryParam(OAuth2Constants.SCOPE, scope);
if (prompt != null && prompt.length() > 0) {
redirectUriBuilder.queryParam(OAuth2Constants.PROMPT, prompt);
}
if (maxAge != null && maxAge.length() > 0) {
redirectUriBuilder.queryParam(OAuth2Constants.MAX_AGE, maxAge);
}
scope = TokenUtil.attachOIDCScope(scope);
redirectUriBuilder.queryParam(OAuth2Constants.SCOPE, scope);
return redirectUriBuilder.build().toString();
}
@@ -206,7 +219,7 @@ public class OAuthRequestAuthenticator {
tokenStore.saveRequest();
log.debug("Sending redirect to login page: " + redirect);
exchange.getResponse().setStatus(302);
exchange.getResponse().setCookie(deployment.getStateCookieName(), state, /* need to set path? */ null, null, -1, deployment.getSslRequired().isRequired(facade.getRequest().getRemoteAddr()), false);
exchange.getResponse().setCookie(deployment.getStateCookieName(), state, /* need to set path? */ null, null, -1, deployment.getSslRequired().isRequired(facade.getRequest().getRemoteAddr()), true);
exchange.getResponse().setHeader("Location", redirect);
return true;
}
@@ -329,7 +342,7 @@ public class OAuthRequestAuthenticator {
refreshToken = tokenResponse.getRefreshToken();
idTokenString = tokenResponse.getIdToken();
try {
token = RSATokenVerifier.verifyToken(tokenString, deployment.getRealmKey(), deployment.getRealmInfoUrl());
token = AdapterRSATokenVerifier.verifyToken(tokenString, deployment);
if (idTokenString != null) {
try {
JWSInput input = new JWSInput(idTokenString);
@@ -35,7 +35,8 @@ public class OIDCAuthenticationError implements AuthenticationError {
CODE_TO_TOKEN_FAILURE,
INVALID_TOKEN,
STALE_TOKEN,
NO_AUTHORIZATION_HEADER
NO_AUTHORIZATION_HEADER,
NO_QUERY_PARAMETER_ACCESS_TOKEN
}
private Reason reason;
@@ -17,20 +17,32 @@
package org.keycloak.adapters;
import java.security.PublicKey;
import org.jboss.logging.Logger;
import org.keycloak.adapters.authentication.ClientCredentialsProvider;
import org.keycloak.adapters.authentication.JWTClientCredentialsProvider;
import org.keycloak.adapters.rotation.AdapterRSATokenVerifier;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.adapters.spi.UserSessionManagement;
import org.keycloak.common.util.StreamUtil;
import org.keycloak.jose.jwk.JSONWebKeySet;
import org.keycloak.jose.jwk.JWK;
import org.keycloak.jose.jwk.JWKBuilder;
import org.keycloak.jose.jws.JWSInputException;
import org.keycloak.representations.VersionRepresentation;
import org.keycloak.constants.AdapterConstants;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.jose.jws.JWSInputException;
import org.keycloak.jose.jws.crypto.RSAProvider;
import org.keycloak.representations.VersionRepresentation;
import org.keycloak.representations.adapters.action.AdminAction;
import org.keycloak.representations.adapters.action.LogoutAction;
import org.keycloak.representations.adapters.action.PushNotBeforeAction;
import org.keycloak.representations.adapters.action.TestAvailabilityAction;
import org.keycloak.util.JsonSerialization;
import org.keycloak.common.util.StreamUtil;
import java.security.PublicKey;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
@@ -82,6 +94,10 @@ public class PreAuthActionsHandler {
if (!resolveDeployment()) return true;
handleTestAvailable();
return true;
} else if (requestUri.endsWith(AdapterConstants.K_JWKS)) {
if (!resolveDeployment()) return true;
handleJwksRequest();
return true;
}
return false;
}
@@ -198,7 +214,8 @@ public class PreAuthActionsHandler {
try {
JWSInput input = new JWSInput(token);
if (RSAProvider.verify(input, deployment.getRealmKey())) {
PublicKey publicKey = AdapterRSATokenVerifier.getPublicKey(input.getHeader().getKeyId(), deployment);
if (RSAProvider.verify(input, publicKey)) {
return input;
}
} catch (JWSInputException ignore) {
@@ -240,4 +257,26 @@ public class PreAuthActionsHandler {
}
}
protected void handleJwksRequest() {
try {
JSONWebKeySet jwks = new JSONWebKeySet();
ClientCredentialsProvider clientCredentialsProvider = deployment.getClientAuthenticator();
// For now, just get signature key from JWT provider. We can add more if we support encryption etc.
if (clientCredentialsProvider instanceof JWTClientCredentialsProvider) {
PublicKey publicKey = ((JWTClientCredentialsProvider) clientCredentialsProvider).getPublicKey();
JWK jwk = JWKBuilder.create().rs256(publicKey);
jwks.setKeys(new JWK[] { jwk });
} else {
jwks.setKeys(new JWK[] {});
}
facade.getResponse().setStatus(200);
facade.getResponse().setHeader("Content-Type", "application/json");
JsonSerialization.writeValueToStream(facade.getResponse().getOutputStream(), jwks);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
@@ -0,0 +1,54 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters;
import org.jboss.logging.Logger;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.spi.HttpFacade;
/**
* @author <a href="mailto:froehlich.ch@gmail.com">Christian Froehlich</a>
* @version $Revision: 1 $
*/
public class QueryParamterTokenRequestAuthenticator extends BearerTokenRequestAuthenticator {
public static final String ACCESS_TOKEN = "access_token";
protected Logger log = Logger.getLogger(QueryParamterTokenRequestAuthenticator.class);
public QueryParamterTokenRequestAuthenticator(KeycloakDeployment deployment) {
super(deployment);
}
public AuthOutcome authenticate(HttpFacade exchange) {
tokenString = null;
tokenString = getAccessTokenFromQueryParamter(exchange);
if (tokenString == null || tokenString.trim().isEmpty()) {
challenge = challengeResponse(exchange, OIDCAuthenticationError.Reason.NO_QUERY_PARAMETER_ACCESS_TOKEN, null, null);
return AuthOutcome.NOT_ATTEMPTED;
}
return (authenticateToken(exchange, tokenString));
}
String getAccessTokenFromQueryParamter(HttpFacade exchange) {
try {
if (exchange != null && exchange.getRequest() != null) {
return exchange.getRequest().getQueryParamValue(ACCESS_TOKEN);
}
} catch (Exception ignore) {
}
return null;
}
}
@@ -18,9 +18,11 @@
package org.keycloak.adapters;
import org.jboss.logging.Logger;
import org.keycloak.AuthorizationContext;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.RSATokenVerifier;
import org.keycloak.adapters.rotation.AdapterRSATokenVerifier;
import org.keycloak.common.VerificationException;
import org.keycloak.common.util.Time;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.representations.IDToken;
@@ -74,7 +76,11 @@ public class RefreshableKeycloakSecurityContext extends KeycloakSecurityContext
}
public boolean isActive() {
return token != null && this.token.isActive() && this.token.getIssuedAt() > deployment.getNotBefore();
return token != null && this.token.isActive() && deployment!=null && this.token.getIssuedAt() > deployment.getNotBefore();
}
public boolean isTokenTimeToLiveSufficient(AccessToken token) {
return token != null && (token.getExpiration() - this.deployment.getTokenMinimumTimeToLive()) > Time.currentTime();
}
public KeycloakDeployment getDeployment() {
@@ -95,7 +101,7 @@ public class RefreshableKeycloakSecurityContext extends KeycloakSecurityContext
if (log.isTraceEnabled()) {
log.trace("checking whether to refresh.");
}
if (isActive()) return true;
if (isActive() && isTokenTimeToLiveSufficient(this.token)) return true;
}
if (this.deployment == null || refreshToken == null) return false; // Might be serialized in HttpSession?
@@ -124,12 +130,19 @@ public class RefreshableKeycloakSecurityContext extends KeycloakSecurityContext
String tokenString = response.getToken();
AccessToken token = null;
try {
token = RSATokenVerifier.verifyToken(tokenString, deployment.getRealmKey(), deployment.getRealmInfoUrl());
token = AdapterRSATokenVerifier.verifyToken(tokenString, deployment);
log.debug("Token Verification succeeded!");
} catch (VerificationException e) {
log.error("failed verification of token");
return false;
}
// If the TTL is greater-or-equal to the expire time on the refreshed token, have to abort or go into an infinite refresh loop
if (!isTokenTimeToLiveSufficient(token)) {
log.error("failed to refresh the token with a longer time-to-live than the minimum");
return false;
}
if (response.getNotBeforePolicy() > deployment.getNotBefore()) {
deployment.setNotBefore(response.getNotBeforePolicy());
}
@@ -145,4 +158,8 @@ public class RefreshableKeycloakSecurityContext extends KeycloakSecurityContext
tokenStore.refreshCallback(this);
return true;
}
public void setAuthorizationContext(AuthorizationContext authorizationContext) {
this.authorizationContext = authorizationContext;
}
}
@@ -61,7 +61,7 @@ public abstract class RequestAuthenticator {
if (log.isTraceEnabled()) {
log.trace("try bearer");
}
AuthOutcome outcome = bearer.authenticate(facade);
if (outcome == AuthOutcome.FAILED) {
challenge = bearer.getChallenge();
@@ -74,18 +74,36 @@ public abstract class RequestAuthenticator {
return AuthOutcome.AUTHENTICATED;
}
QueryParamterTokenRequestAuthenticator queryParamAuth = createQueryParamterTokenRequestAuthenticator();
if (log.isTraceEnabled()) {
log.trace("try query paramter auth");
}
outcome = queryParamAuth.authenticate(facade);
if (outcome == AuthOutcome.FAILED) {
challenge = queryParamAuth.getChallenge();
log.debug("QueryParamAuth auth FAILED");
return AuthOutcome.FAILED;
} else if (outcome == AuthOutcome.AUTHENTICATED) {
if (verifySSL()) return AuthOutcome.FAILED;
log.debug("QueryParamAuth AUTHENTICATED");
completeAuthentication(queryParamAuth, "KEYCLOAK");
return AuthOutcome.AUTHENTICATED;
}
if (deployment.isEnableBasicAuth()) {
BasicAuthRequestAuthenticator basicAuth = createBasicAuthAuthenticator();
if (log.isTraceEnabled()) {
log.trace("try basic auth");
}
outcome = basicAuth.authenticate(facade);
if (outcome == AuthOutcome.FAILED) {
challenge = basicAuth.getChallenge();
log.debug("BasicAuth FAILED");
return AuthOutcome.FAILED;
} else if (outcome == AuthOutcome.AUTHENTICATED) {
if (verifySSL()) return AuthOutcome.FAILED;
log.debug("BasicAuth AUTHENTICATED");
completeAuthentication(basicAuth, "BASIC");
return AuthOutcome.AUTHENTICATED;
@@ -150,6 +168,10 @@ public abstract class RequestAuthenticator {
return new BasicAuthRequestAuthenticator(deployment);
}
protected QueryParamterTokenRequestAuthenticator createQueryParamterTokenRequestAuthenticator() {
return new QueryParamterTokenRequestAuthenticator(deployment);
}
protected void completeAuthentication(OAuthRequestAuthenticator oauth) {
RefreshableKeycloakSecurityContext session = new RefreshableKeycloakSecurityContext(deployment, tokenStore, oauth.getTokenString(), oauth.getToken(), oauth.getIdTokenString(), oauth.getIdToken(), oauth.getRefreshToken());
final KeycloakPrincipal<RefreshableKeycloakSecurityContext> principal = new KeycloakPrincipal<RefreshableKeycloakSecurityContext>(AdapterUtils.getPrincipalName(deployment, oauth.getToken()), session);
@@ -158,10 +180,12 @@ public abstract class RequestAuthenticator {
}
protected abstract void completeOAuthAuthentication(KeycloakPrincipal<RefreshableKeycloakSecurityContext> principal);
protected abstract void completeBearerAuthentication(KeycloakPrincipal<RefreshableKeycloakSecurityContext> principal, String method);
/**
* After code is received, we change the session id if possible to guard against https://www.owasp.org/index.php/Session_Fixation
*
* @param create
* @return
*/
@@ -26,12 +26,12 @@ import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.keycloak.OAuth2Constants;
import org.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
import org.keycloak.constants.AdapterConstants;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.common.util.HostUtils;
import org.keycloak.util.JsonSerialization;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.common.util.StreamUtil;
import org.keycloak.constants.AdapterConstants;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.util.JsonSerialization;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -17,10 +17,10 @@
package org.keycloak.adapters.authentication;
import java.util.Map;
import org.keycloak.adapters.KeycloakDeployment;
import java.util.Map;
/**
* The simple SPI for authenticating clients/applications . It's used by adapter during all OIDC backchannel requests to Keycloak server
* (codeToToken exchange, refresh token or backchannel logout) . You can also use it in your application during direct access grants or service account request
@@ -17,6 +17,12 @@
package org.keycloak.adapters.authentication;
import org.apache.http.NameValuePair;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.jboss.logging.Logger;
import org.keycloak.adapters.KeycloakDeployment;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -24,12 +30,6 @@ import java.util.Map;
import java.util.ServiceConfigurationError;
import java.util.ServiceLoader;
import org.apache.http.NameValuePair;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.jboss.logging.Logger;
import org.keycloak.adapters.KeycloakDeployment;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
@@ -17,14 +17,14 @@
package org.keycloak.adapters.authentication;
import java.util.Map;
import org.jboss.logging.Logger;
import org.keycloak.OAuth2Constants;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.util.BasicAuthHelper;
import java.util.Map;
/**
* Traditional OAuth2 authentication of clients based on client_id and client_secret
*
@@ -17,16 +17,24 @@
package org.keycloak.adapters.authentication;
import java.security.PrivateKey;
import java.security.KeyPair;
import java.security.PublicKey;
import java.util.Map;
import org.keycloak.OAuth2Constants;
import org.keycloak.adapters.AdapterUtils;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.jose.jwk.JWK;
import org.keycloak.jose.jwk.JWKBuilder;
import org.keycloak.jose.jws.JWSBuilder;
import org.keycloak.representations.JsonWebToken;
import org.keycloak.common.util.KeystoreUtil;
import org.keycloak.common.util.Time;
import org.keycloak.jose.jws.JWSBuilder;
import org.keycloak.representations.JsonWebToken;
import java.security.PrivateKey;
import java.util.Map;
/**
* Client authentication based on JWT signed by client private key .
@@ -38,7 +46,9 @@ public class JWTClientCredentialsProvider implements ClientCredentialsProvider {
public static final String PROVIDER_ID = "jwt";
private PrivateKey privateKey;
private KeyPair keyPair;
private JWK publicKeyJwk;
private int tokenTimeout;
@Override
@@ -46,14 +56,23 @@ public class JWTClientCredentialsProvider implements ClientCredentialsProvider {
return PROVIDER_ID;
}
public void setPrivateKey(PrivateKey privateKey) {
this.privateKey = privateKey;
public void setupKeyPair(KeyPair keyPair) {
this.keyPair = keyPair;
this.publicKeyJwk = JWKBuilder.create().rs256(keyPair.getPublic());
}
public void setTokenTimeout(int tokenTimeout) {
this.tokenTimeout = tokenTimeout;
}
protected int getTokenTimeout() {
return tokenTimeout;
}
public PublicKey getPublicKey() {
return keyPair.getPublic();
}
@Override
public void init(KeycloakDeployment deployment, Object config) {
if (config == null || !(config instanceof Map)) {
@@ -84,7 +103,9 @@ public class JWTClientCredentialsProvider implements ClientCredentialsProvider {
if (clientKeyAlias == null) {
clientKeyAlias = deployment.getResourceName();
}
this.privateKey = KeystoreUtil.loadPrivateKeyFromKeystore(clientKeystoreFile, clientKeystorePassword, clientKeyPassword, clientKeyAlias, clientKeystoreFormat);
KeyPair keyPair = KeystoreUtil.loadKeyPairFromKeystore(clientKeystoreFile, clientKeystorePassword, clientKeyPassword, clientKeyAlias, clientKeystoreFormat);
setupKeyPair(keyPair);
this.tokenTimeout = asInt(cfg, "token-timeout", 10);
}
@@ -116,8 +137,9 @@ public class JWTClientCredentialsProvider implements ClientCredentialsProvider {
public String createSignedRequestToken(String clientId, String realmInfoUrl) {
JsonWebToken jwt = createRequestToken(clientId, realmInfoUrl);
return new JWSBuilder()
.kid(publicKeyJwk.getKeyId())
.jsonContent(jwt)
.rsa256(privateKey);
.rsa256(keyPair.getPrivate());
}
protected JsonWebToken createRequestToken(String clientId, String realmInfoUrl) {
@@ -0,0 +1,287 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.authorization;
import org.jboss.logging.Logger;
import org.keycloak.AuthorizationContext;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.OIDCHttpFacade;
import org.keycloak.adapters.spi.HttpFacade.Request;
import org.keycloak.adapters.spi.HttpFacade.Response;
import org.keycloak.authorization.client.AuthzClient;
import org.keycloak.authorization.client.representation.ResourceRepresentation;
import org.keycloak.authorization.client.resource.ProtectedResource;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig.EnforcementMode;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig.PathConfig;
import org.keycloak.representations.idm.authorization.Permission;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @author <a href="mailto:psilva@redhat.com">Pedro Igor</a>
*/
public abstract class AbstractPolicyEnforcer {
private static Logger LOGGER = Logger.getLogger(AbstractPolicyEnforcer.class);
private final PolicyEnforcerConfig enforcerConfig;
private final PolicyEnforcer policyEnforcer;
private List<PathConfig> paths;
private AuthzClient authzClient;
private PathMatcher pathMatcher;
public AbstractPolicyEnforcer(PolicyEnforcer policyEnforcer) {
this.policyEnforcer = policyEnforcer;
this.enforcerConfig = policyEnforcer.getEnforcerConfig();
this.authzClient = policyEnforcer.getClient();
this.pathMatcher = new PathMatcher();
this.paths = new ArrayList<>(policyEnforcer.getPaths());
}
public AuthorizationContext authorize(OIDCHttpFacade httpFacade) {
EnforcementMode enforcementMode = this.enforcerConfig.getEnforcementMode();
if (EnforcementMode.DISABLED.equals(enforcementMode)) {
return createEmptyAuthorizationContext(true);
}
KeycloakSecurityContext securityContext = httpFacade.getSecurityContext();
if (securityContext != null) {
AccessToken accessToken = securityContext.getToken();
if (accessToken != null) {
Request request = httpFacade.getRequest();
Response response = httpFacade.getResponse();
String pathInfo = URI.create(request.getURI()).getPath().substring(1);
String path = pathInfo.substring(pathInfo.indexOf('/'), pathInfo.length());
PathConfig pathConfig = this.pathMatcher.matches(path, this.paths);
LOGGER.debugf("Checking permissions for path [%s] with config [%s].", request.getURI(), pathConfig);
if (pathConfig == null) {
if (EnforcementMode.PERMISSIVE.equals(enforcementMode)) {
return createAuthorizationContext(accessToken);
}
LOGGER.debugf("Could not find a configuration for path [%s]", path);
response.sendError(403, "Could not find a configuration for path [" + path + "].");
return createEmptyAuthorizationContext(false);
}
if (EnforcementMode.DISABLED.equals(pathConfig.getEnforcementMode())) {
return createEmptyAuthorizationContext(true);
}
PathConfig actualPathConfig = resolvePathConfig(pathConfig, request);
Set<String> requiredScopes = getRequiredScopes(actualPathConfig, request);
if (isAuthorized(actualPathConfig, requiredScopes, accessToken, httpFacade)) {
try {
return createAuthorizationContext(accessToken);
} catch (Exception e) {
throw new RuntimeException("Error processing path [" + actualPathConfig.getPath() + "].", e);
}
}
if (!challenge(actualPathConfig, requiredScopes, httpFacade)) {
LOGGER.debugf("Sending challenge to the client. Path [%s]", pathConfig);
response.sendError(403, "Authorization failed.");
}
}
}
return createEmptyAuthorizationContext(false);
}
protected abstract boolean challenge(PathConfig pathConfig, Set<String> requiredScopes, OIDCHttpFacade facade);
protected boolean isAuthorized(PathConfig actualPathConfig, Set<String> requiredScopes, AccessToken accessToken, OIDCHttpFacade httpFacade) {
Request request = httpFacade.getRequest();
PolicyEnforcerConfig enforcerConfig = getEnforcerConfig();
String accessDeniedPath = enforcerConfig.getOnDenyRedirectTo();
if (accessDeniedPath != null) {
if (request.getURI().contains(accessDeniedPath)) {
return true;
}
}
AccessToken.Authorization authorization = accessToken.getAuthorization();
if (authorization == null) {
return false;
}
List<Permission> permissions = authorization.getPermissions();
boolean hasPermission = false;
for (Permission permission : permissions) {
if (permission.getResourceSetId() != null) {
if (isResourcePermission(actualPathConfig, permission)) {
hasPermission = true;
if (actualPathConfig.isInstance() && !matchResourcePermission(actualPathConfig, permission)) {
continue;
}
if (hasResourceScopePermission(requiredScopes, permission, actualPathConfig)) {
LOGGER.debugf("Authorization GRANTED for path [%s]. Permissions [%s].", actualPathConfig, permissions);
if (request.getMethod().equalsIgnoreCase("DELETE") && actualPathConfig.isInstance()) {
this.paths.remove(actualPathConfig);
}
return true;
}
}
} else {
if (hasResourceScopePermission(requiredScopes, permission, actualPathConfig)) {
hasPermission = true;
return true;
}
}
}
if (!hasPermission && EnforcementMode.PERMISSIVE.equals(actualPathConfig.getEnforcementMode())) {
return true;
}
LOGGER.debugf("Authorization FAILED for path [%s]. No enough permissions [%s].", actualPathConfig, permissions);
return false;
}
private boolean hasResourceScopePermission(Set<String> requiredScopes, Permission permission, PathConfig actualPathConfig) {
Set<String> allowedScopes = permission.getScopes();
return (allowedScopes.containsAll(requiredScopes) || allowedScopes.isEmpty());
}
protected AuthzClient getAuthzClient() {
return this.authzClient;
}
protected PolicyEnforcerConfig getEnforcerConfig() {
return enforcerConfig;
}
protected PolicyEnforcer getPolicyEnforcer() {
return policyEnforcer;
}
private AuthorizationContext createEmptyAuthorizationContext(final boolean granted) {
return new AuthorizationContext() {
@Override
public boolean hasPermission(String resourceName, String scopeName) {
return granted;
}
@Override
public boolean hasResourcePermission(String resourceName) {
return granted;
}
@Override
public boolean hasScopePermission(String scopeName) {
return granted;
}
@Override
public List<Permission> getPermissions() {
return Collections.EMPTY_LIST;
}
@Override
public boolean isGranted() {
return granted;
}
};
}
private PathConfig resolvePathConfig(PathConfig originalConfig, Request request) {
if (originalConfig.hasPattern()) {
String pathInfo = URI.create(request.getURI()).getPath().substring(1);
String path = pathInfo.substring(pathInfo.indexOf('/'), pathInfo.length());
ProtectedResource resource = this.authzClient.protection().resource();
Set<String> search = resource.findByFilter("uri=" + path);
if (!search.isEmpty()) {
// resource does exist on the server, cache it
ResourceRepresentation targetResource = resource.findById(search.iterator().next()).getResourceDescription();
PathConfig config = new PathConfig();
config.setId(targetResource.getId());
config.setName(targetResource.getName());
config.setType(targetResource.getType());
config.setPath(targetResource.getUri());
config.setScopes(originalConfig.getScopes());
config.setMethods(originalConfig.getMethods());
config.setParentConfig(originalConfig);
config.setEnforcementMode(originalConfig.getEnforcementMode());
this.paths.add(config);
return config;
}
}
return originalConfig;
}
private Set<String> getRequiredScopes(PathConfig pathConfig, Request request) {
Set<String> requiredScopes = new HashSet<>();
requiredScopes.addAll(pathConfig.getScopes());
String method = request.getMethod();
for (PolicyEnforcerConfig.MethodConfig methodConfig : pathConfig.getMethods()) {
if (methodConfig.getMethod().equals(method)) {
requiredScopes.addAll(methodConfig.getScopes());
}
}
return requiredScopes;
}
private AuthorizationContext createAuthorizationContext(AccessToken accessToken) {
return new AuthorizationContext(accessToken, this.paths);
}
private boolean isResourcePermission(PathConfig actualPathConfig, Permission permission) {
// first we try a match using resource id
boolean resourceMatch = matchResourcePermission(actualPathConfig, permission);
// as a fallback, check if the current path is an instance and if so, check if parent's id matches the permission
if (!resourceMatch && actualPathConfig.isInstance()) {
resourceMatch = matchResourcePermission(actualPathConfig.getParentConfig(), permission);
}
return resourceMatch;
}
private boolean matchResourcePermission(PathConfig actualPathConfig, Permission permission) {
return permission.getResourceSetId().equals(actualPathConfig.getId());
}
}
@@ -0,0 +1,79 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.authorization;
import org.jboss.logging.Logger;
import org.keycloak.adapters.OIDCHttpFacade;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.authorization.client.AuthzClient;
import org.keycloak.authorization.client.representation.PermissionRequest;
import org.keycloak.authorization.client.resource.PermissionResource;
import org.keycloak.authorization.client.resource.ProtectionResource;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig.PathConfig;
import java.util.Set;
/**
* @author <a href="mailto:psilva@redhat.com">Pedro Igor</a>
*/
public class BearerTokenPolicyEnforcer extends AbstractPolicyEnforcer {
private static Logger LOGGER = Logger.getLogger(BearerTokenPolicyEnforcer.class);
public BearerTokenPolicyEnforcer(PolicyEnforcer enforcer) {
super(enforcer);
}
@Override
protected boolean challenge(PathConfig pathConfig, Set<String> requiredScopes, OIDCHttpFacade facade) {
if (getEnforcerConfig().getUserManagedAccess() != null) {
challengeUmaAuthentication(pathConfig, requiredScopes, facade);
} else {
challengeEntitlementAuthentication(facade);
}
return true;
}
private void challengeEntitlementAuthentication(OIDCHttpFacade facade) {
HttpFacade.Response response = facade.getResponse();
AuthzClient authzClient = getAuthzClient();
String clientId = authzClient.getConfiguration().getClientId();
String authorizationServerUri = authzClient.getServerConfiguration().getIssuer().toString() + "/authz/entitlement";
response.setStatus(401);
response.setHeader("WWW-Authenticate", "KC_ETT realm=\"" + clientId + "\",as_uri=\"" + authorizationServerUri + "\"");
}
private void challengeUmaAuthentication(PathConfig pathConfig, Set<String> requiredScopes, OIDCHttpFacade facade) {
HttpFacade.Response response = facade.getResponse();
AuthzClient authzClient = getAuthzClient();
String ticket = getPermissionTicket(pathConfig, requiredScopes, authzClient);
String clientId = authzClient.getConfiguration().getClientId();
String authorizationServerUri = authzClient.getServerConfiguration().getIssuer().toString() + "/authz/authorize";
response.setStatus(401);
response.setHeader("WWW-Authenticate", "UMA realm=\"" + clientId + "\",as_uri=\"" + authorizationServerUri + "\",ticket=\"" + ticket + "\"");
}
private String getPermissionTicket(PathConfig pathConfig, Set<String> requiredScopes, AuthzClient authzClient) {
ProtectionResource protection = authzClient.protection();
PermissionResource permission = protection.permission();
PermissionRequest permissionRequest = new PermissionRequest();
permissionRequest.setResourceSetId(pathConfig.getId());
permissionRequest.setScopes(requiredScopes);
return permission.forResource(permissionRequest).getTicket();
}
}
@@ -0,0 +1,150 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.authorization;
import org.jboss.logging.Logger;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.OIDCHttpFacade;
import org.keycloak.adapters.rotation.AdapterRSATokenVerifier;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.authorization.client.AuthorizationDeniedException;
import org.keycloak.authorization.client.AuthzClient;
import org.keycloak.authorization.client.representation.AuthorizationRequest;
import org.keycloak.authorization.client.representation.AuthorizationResponse;
import org.keycloak.authorization.client.representation.EntitlementRequest;
import org.keycloak.authorization.client.representation.EntitlementResponse;
import org.keycloak.authorization.client.representation.PermissionRequest;
import org.keycloak.authorization.client.representation.PermissionResponse;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig.PathConfig;
import org.keycloak.representations.idm.authorization.Permission;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
/**
* @author <a href="mailto:psilva@redhat.com">Pedro Igor</a>
*/
public class KeycloakAdapterPolicyEnforcer extends AbstractPolicyEnforcer {
private static Logger LOGGER = Logger.getLogger(KeycloakAdapterPolicyEnforcer.class);
public KeycloakAdapterPolicyEnforcer(PolicyEnforcer policyEnforcer) {
super(policyEnforcer);
}
@Override
protected boolean isAuthorized(PathConfig pathConfig, Set<String> requiredScopes, AccessToken accessToken, OIDCHttpFacade httpFacade) {
int retry = 2;
AccessToken original = accessToken;
while (retry > 0) {
if (super.isAuthorized(pathConfig, requiredScopes, accessToken, httpFacade)) {
return true;
}
accessToken = requestAuthorizationToken(pathConfig, requiredScopes, httpFacade);
if (accessToken == null) {
return false;
}
AccessToken.Authorization authorization = original.getAuthorization();
if (authorization == null) {
authorization = new AccessToken.Authorization();
authorization.setPermissions(new ArrayList<Permission>());
}
AccessToken.Authorization newAuthorization = accessToken.getAuthorization();
if (newAuthorization != null) {
authorization.getPermissions().addAll(newAuthorization.getPermissions());
}
original.setAuthorization(authorization);
retry--;
}
return false;
}
@Override
protected boolean challenge(PathConfig pathConfig, Set<String> requiredScopes, OIDCHttpFacade facade) {
String accessDeniedPath = getEnforcerConfig().getOnDenyRedirectTo();
HttpFacade.Response response = facade.getResponse();
if (accessDeniedPath != null) {
response.setStatus(302);
response.setHeader("Location", accessDeniedPath);
} else {
response.sendError(403);
}
return true;
}
private AccessToken requestAuthorizationToken(PathConfig pathConfig, Set<String> requiredScopes, OIDCHttpFacade httpFacade) {
try {
String accessToken = httpFacade.getSecurityContext().getTokenString();
AuthzClient authzClient = getAuthzClient();
KeycloakDeployment deployment = getPolicyEnforcer().getDeployment();
if (getEnforcerConfig().getUserManagedAccess() != null) {
LOGGER.debug("Obtaining authorization for authenticated user.");
PermissionRequest permissionRequest = new PermissionRequest();
permissionRequest.setResourceSetId(pathConfig.getId());
permissionRequest.setScopes(requiredScopes);
PermissionResponse permissionResponse = authzClient.protection().permission().forResource(permissionRequest);
AuthorizationRequest authzRequest = new AuthorizationRequest(permissionResponse.getTicket());
AuthorizationResponse authzResponse = authzClient.authorization(accessToken).authorize(authzRequest);
if (authzResponse != null) {
return AdapterRSATokenVerifier.verifyToken(authzResponse.getRpt(), deployment);
}
return null;
} else {
LOGGER.debug("Obtaining entitlements for authenticated user.");
AccessToken token = httpFacade.getSecurityContext().getToken();
if (token.getAuthorization() == null) {
EntitlementResponse authzResponse = authzClient.entitlement(accessToken).getAll(authzClient.getConfiguration().getClientId());
return AdapterRSATokenVerifier.verifyToken(authzResponse.getRpt(), deployment);
} else {
EntitlementRequest request = new EntitlementRequest();
PermissionRequest permissionRequest = new PermissionRequest();
permissionRequest.setResourceSetId(pathConfig.getId());
permissionRequest.setResourceSetName(pathConfig.getName());
permissionRequest.setScopes(new HashSet<>(pathConfig.getScopes()));
request.addPermission(permissionRequest);
EntitlementResponse authzResponse = authzClient.entitlement(accessToken).get(authzClient.getConfiguration().getClientId(), request);
return AdapterRSATokenVerifier.verifyToken(authzResponse.getRpt(), deployment);
}
}
} catch (AuthorizationDeniedException e) {
return null;
} catch (Exception e) {
throw new RuntimeException("Unexpected error during authorization request.", e);
}
}
}
@@ -0,0 +1,103 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.authorization;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig.PathConfig;
import java.util.List;
/**
* @author <a href="mailto:psilva@redhat.com">Pedro Igor</a>
*/
class PathMatcher {
private static final String ANY_RESOURCE_PATTERN = "/*";
PathConfig matches(final String requestedUri, List<PathConfig> paths) {
PathConfig actualConfig = null;
for (PathConfig entry : paths) {
String protectedUri = entry.getPath();
String selectedUri = null;
if (protectedUri.equals(ANY_RESOURCE_PATTERN) && actualConfig == null) {
selectedUri = protectedUri;
}
int suffixIndex = protectedUri.indexOf(ANY_RESOURCE_PATTERN + ".");
if (suffixIndex != -1) {
String protectedSuffix = protectedUri.substring(suffixIndex + ANY_RESOURCE_PATTERN.length());
if (requestedUri.endsWith(protectedSuffix)) {
selectedUri = protectedUri;
}
}
if (protectedUri.equals(requestedUri)) {
selectedUri = protectedUri;
}
if (protectedUri.endsWith(ANY_RESOURCE_PATTERN)) {
String formattedPattern = removeWildCardsFromUri(protectedUri);
if (!formattedPattern.equals("/") && requestedUri.startsWith(formattedPattern)) {
selectedUri = protectedUri;
}
if (!formattedPattern.equals("/") && formattedPattern.endsWith("/") && formattedPattern.substring(0, formattedPattern.length() - 1).equals(requestedUri)) {
selectedUri = protectedUri;
}
}
int startRegex = protectedUri.indexOf('{');
if (startRegex != -1) {
String prefix = protectedUri.substring(0, startRegex);
if (requestedUri.startsWith(prefix)) {
selectedUri = protectedUri;
}
}
if (selectedUri != null) {
selectedUri = protectedUri;
}
if (selectedUri != null) {
if (actualConfig == null) {
actualConfig = entry;
} else {
if (actualConfig.equals(ANY_RESOURCE_PATTERN)) {
actualConfig = entry;
}
if (protectedUri.startsWith(removeWildCardsFromUri(actualConfig.getPath()))) {
actualConfig = entry;
}
}
}
}
return actualConfig;
}
private String removeWildCardsFromUri(String protectedUri) {
return protectedUri.replaceAll("/[*]", "/");
}
}
@@ -0,0 +1,227 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.authorization;
import org.jboss.logging.Logger;
import org.keycloak.AuthorizationContext;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.OIDCHttpFacade;
import org.keycloak.authorization.client.AuthzClient;
import org.keycloak.authorization.client.Configuration;
import org.keycloak.authorization.client.representation.RegistrationResponse;
import org.keycloak.authorization.client.representation.ResourceRepresentation;
import org.keycloak.authorization.client.representation.ScopeRepresentation;
import org.keycloak.authorization.client.resource.ProtectedResource;
import org.keycloak.representations.adapters.config.AdapterConfig;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig;
import org.keycloak.representations.adapters.config.PolicyEnforcerConfig.PathConfig;
import org.keycloak.representations.idm.authorization.Permission;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @author <a href="mailto:psilva@redhat.com">Pedro Igor</a>
*/
public class PolicyEnforcer {
private static Logger LOGGER = Logger.getLogger(PolicyEnforcer.class);
private final KeycloakDeployment deployment;
private final AuthzClient authzClient;
private final PolicyEnforcerConfig enforcerConfig;
private final List<PathConfig> paths;
public PolicyEnforcer(KeycloakDeployment deployment, AdapterConfig adapterConfig) {
this.deployment = deployment;
this.enforcerConfig = adapterConfig.getPolicyEnforcerConfig();
this.authzClient = AuthzClient.create(new Configuration(adapterConfig.getAuthServerUrl(), adapterConfig.getRealm(), adapterConfig.getResource(), adapterConfig.getCredentials(), deployment.getClient()));
this.paths = configurePaths(this.authzClient.protection().resource(), this.enforcerConfig);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Initialization complete. Path configurations:");
for (PathConfig pathConfig : this.paths) {
LOGGER.debug(pathConfig);
}
}
}
public AuthorizationContext enforce(OIDCHttpFacade facade) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debugv("Policy enforcement is enable. Enforcing policy decisions for path [{0}].", facade.getRequest().getURI());
}
AuthorizationContext context;
if (deployment.isBearerOnly()) {
context = new BearerTokenPolicyEnforcer(this).authorize(facade);
} else {
context = new KeycloakAdapterPolicyEnforcer(this).authorize(facade);
}
if (LOGGER.isDebugEnabled()) {
LOGGER.debugv("Policy enforcement result for path [{0}] is : {1}", facade.getRequest().getURI(), context.isGranted() ? "GRANTED" : "DENIED");
LOGGER.debugv("Returning authorization context with permissions:");
for (Permission permission : context.getPermissions()) {
LOGGER.debug(permission);
}
}
return context;
}
PolicyEnforcerConfig getEnforcerConfig() {
return enforcerConfig;
}
AuthzClient getClient() {
return authzClient;
}
public List<PathConfig> getPaths() {
return Collections.unmodifiableList(paths);
}
KeycloakDeployment getDeployment() {
return deployment;
}
private List<PathConfig> configurePaths(ProtectedResource protectedResource, PolicyEnforcerConfig enforcerConfig) {
boolean loadPathsFromServer = true;
for (PathConfig pathConfig : enforcerConfig.getPaths()) {
if (!PolicyEnforcerConfig.EnforcementMode.DISABLED.equals(pathConfig.getEnforcementMode())) {
loadPathsFromServer = false;
break;
}
}
if (loadPathsFromServer) {
LOGGER.info("No path provided in configuration.");
return configureAllPathsForResourceServer(protectedResource);
} else {
LOGGER.info("Paths provided in configuration.");
return configureDefinedPaths(protectedResource, enforcerConfig);
}
}
private List<PathConfig> configureDefinedPaths(ProtectedResource protectedResource, PolicyEnforcerConfig enforcerConfig) {
List<PathConfig> paths = new ArrayList<>();
for (PathConfig pathConfig : enforcerConfig.getPaths()) {
Set<String> search;
String resourceName = pathConfig.getName();
String path = pathConfig.getPath();
if (resourceName != null) {
LOGGER.debugf("Trying to find resource with name [%s] for path [%s].", resourceName, path);
search = protectedResource.findByFilter("name=" + resourceName);
} else {
LOGGER.debugf("Trying to find resource with uri [%s] for path [%s].", path, path);
search = protectedResource.findByFilter("uri=" + path);
}
if (search.isEmpty()) {
if (enforcerConfig.isCreateResources()) {
LOGGER.debugf("Creating resource on server for path [%s].", pathConfig);
ResourceRepresentation resource = new ResourceRepresentation();
resource.setName(resourceName);
resource.setType(pathConfig.getType());
resource.setUri(path);
HashSet<ScopeRepresentation> scopes = new HashSet<>();
for (String scopeName : pathConfig.getScopes()) {
ScopeRepresentation scope = new ScopeRepresentation();
scope.setName(scopeName);
scopes.add(scope);
}
resource.setScopes(scopes);
RegistrationResponse registrationResponse = protectedResource.create(resource);
pathConfig.setId(registrationResponse.getId());
} else {
throw new RuntimeException("Could not find matching resource on server with uri [" + path + "] or name [" + resourceName + "]. Make sure you have created a resource on the server that matches with the path configuration.");
}
} else {
pathConfig.setId(search.iterator().next());
}
PathConfig existingPath = null;
for (PathConfig current : paths) {
if (current.getId().equals(pathConfig.getId()) && current.getPath().equals(pathConfig.getPath())) {
existingPath = current;
break;
}
}
if (existingPath == null) {
paths.add(pathConfig);
} else {
existingPath.getMethods().addAll(pathConfig.getMethods());
existingPath.getScopes().addAll(pathConfig.getScopes());
}
}
return paths;
}
private List<PathConfig> configureAllPathsForResourceServer(ProtectedResource protectedResource) {
LOGGER.info("Querying the server for all resources associated with this application.");
List<PathConfig> paths = new ArrayList<>();
for (String id : protectedResource.findAll()) {
RegistrationResponse response = protectedResource.findById(id);
ResourceRepresentation resourceDescription = response.getResourceDescription();
if (resourceDescription.getUri() != null) {
paths.add(createPathConfig(resourceDescription));
}
}
return paths;
}
private PathConfig createPathConfig(ResourceRepresentation resourceDescription) {
PathConfig pathConfig = new PathConfig();
pathConfig.setId(resourceDescription.getId());
pathConfig.setName(resourceDescription.getName());
pathConfig.setPath(resourceDescription.getUri());
List<String> scopeNames = new ArrayList<>();
for (ScopeRepresentation scope : resourceDescription.getScopes()) {
scopeNames.add(scope.getName());
}
pathConfig.setScopes(scopeNames);
pathConfig.setType(resourceDescription.getType());
return pathConfig;
}
}
@@ -17,14 +17,17 @@
package org.keycloak.adapters.jaas;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.security.Principal;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.jboss.logging.Logger;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.adapters.AdapterUtils;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
import org.keycloak.adapters.rotation.AdapterRSATokenVerifier;
import org.keycloak.common.VerificationException;
import org.keycloak.common.util.FindFile;
import org.keycloak.common.util.reflections.Reflections;
import org.keycloak.representations.AccessToken;
import javax.security.auth.Subject;
import javax.security.auth.callback.Callback;
@@ -34,19 +37,14 @@ import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
import javax.security.auth.login.LoginException;
import javax.security.auth.spi.LoginModule;
import org.jboss.logging.Logger;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.RSATokenVerifier;
import org.keycloak.common.VerificationException;
import org.keycloak.adapters.AdapterDeploymentContext;
import org.keycloak.adapters.AdapterUtils;
import org.keycloak.common.util.FindFile;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
import org.keycloak.representations.AccessToken;
import org.keycloak.common.util.reflections.Reflections;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.security.Principal;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
@@ -88,9 +86,6 @@ public abstract class AbstractKeycloakLoginModule implements LoginModule {
try {
InputStream is = FindFile.findFile(keycloakConfigFile);
KeycloakDeployment kd = KeycloakDeploymentBuilder.build(is);
if (kd.getRealmKey() == null) {
new AdapterDeploymentContext().resolveRealmKey(kd);
}
return kd;
} catch (RuntimeException e) {
getLogger().debug("Unable to find or parse file " + keycloakConfigFile + " due to " + e.getMessage(), e);
@@ -190,7 +185,7 @@ public abstract class AbstractKeycloakLoginModule implements LoginModule {
protected Auth bearerAuth(String tokenString) throws VerificationException {
AccessToken token = RSATokenVerifier.verifyToken(tokenString, deployment.getRealmKey(), deployment.getRealmInfoUrl());
AccessToken token = AdapterRSATokenVerifier.verifyToken(tokenString, deployment);
boolean verifyCaller;
if (deployment.isUseResourceRoleMappings()) {
@@ -17,19 +17,6 @@
package org.keycloak.adapters.jaas;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.LoginException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
@@ -39,12 +26,25 @@ import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.jboss.logging.Logger;
import org.keycloak.OAuth2Constants;
import org.keycloak.common.VerificationException;
import org.keycloak.adapters.authentication.ClientCredentialsProviderUtils;
import org.keycloak.common.VerificationException;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.constants.ServiceUrlConstants;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.representations.idm.OAuth2ErrorRepresentation;
import org.keycloak.util.JsonSerialization;
import org.keycloak.common.util.KeycloakUriBuilder;
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.LoginException;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* Login module based on Resource Owner password credentials grant from OAuth2 specs. It's supposed to be used in environments. which
@@ -102,9 +102,9 @@ public class DirectAccessGrantsLoginModule extends AbstractKeycloakLoginModule {
StringBuilder errorBuilder = new StringBuilder("Login failed. Invalid status: " + status);
if (entity != null) {
InputStream is = entity.getContent();
Map<String, String> errors = (Map<String, String>) JsonSerialization.readValue(is, Map.class);
errorBuilder.append(", OAuth2 error. Error: " + errors.get(OAuth2Constants.ERROR))
.append(", Error description: " + errors.get(OAuth2Constants.ERROR_DESCRIPTION));
OAuth2ErrorRepresentation errorRep = JsonSerialization.readValue(is, OAuth2ErrorRepresentation.class);
errorBuilder.append(", OAuth2 error. Error: " + errorRep.getError())
.append(", Error description: " + errorRep.getErrorDescription());
}
String error = errorBuilder.toString();
log.warn(error);
@@ -161,9 +161,9 @@ public class DirectAccessGrantsLoginModule extends AbstractKeycloakLoginModule {
if (entity != null) {
InputStream is = entity.getContent();
if (status == 400) {
Map<String, String> errors = (Map<String, String>) JsonSerialization.readValue(is, Map.class);
errorBuilder.append(", OAuth2 error. Error: " + errors.get(OAuth2Constants.ERROR))
.append(", Error description: " + errors.get(OAuth2Constants.ERROR_DESCRIPTION));
OAuth2ErrorRepresentation errorRep = JsonSerialization.readValue(is, OAuth2ErrorRepresentation.class);
errorBuilder.append(", OAuth2 error. Error: " + errorRep.getError())
.append(", Error description: " + errorRep.getErrorDescription());
} else {
if (is != null) is.close();
File mode changed.
@@ -0,0 +1,58 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.rotation;
import org.jboss.logging.Logger;
import org.keycloak.RSATokenVerifier;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.common.VerificationException;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.representations.AccessToken;
import java.security.PublicKey;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class AdapterRSATokenVerifier {
private static final Logger log = Logger.getLogger(AdapterRSATokenVerifier.class);
public static AccessToken verifyToken(String tokenString, KeycloakDeployment deployment) throws VerificationException {
return verifyToken(tokenString, deployment, true, true);
}
public static PublicKey getPublicKey(String kid, KeycloakDeployment deployment) throws VerificationException {
PublicKeyLocator pkLocator = deployment.getPublicKeyLocator();
PublicKey publicKey = pkLocator.getPublicKey(kid, deployment);
if (publicKey == null) {
log.errorf("Didn't find publicKey for kid: %s", kid);
throw new VerificationException("Didn't find publicKey for specified kid");
}
return publicKey;
}
public static AccessToken verifyToken(String tokenString, KeycloakDeployment deployment, boolean checkActive, boolean checkTokenType) throws VerificationException {
RSATokenVerifier verifier = RSATokenVerifier.create(tokenString).realmUrl(deployment.getRealmInfoUrl()).checkActive(checkActive).checkTokenType(checkTokenType);
PublicKey publicKey = getPublicKey(verifier.getHeader().getKeyId(), deployment);
return verifier.publicKey(publicKey).verify().getToken();
}
}
@@ -0,0 +1,40 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.rotation;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.jose.jws.JWSInput;
import java.security.PublicKey;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class HardcodedPublicKeyLocator implements PublicKeyLocator {
private PublicKey publicKey;
public HardcodedPublicKeyLocator(PublicKey publicKey) {
this.publicKey = publicKey;
}
@Override
public PublicKey getPublicKey(String kid, KeycloakDeployment deployment) {
return publicKey;
}
}
@@ -0,0 +1,101 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.rotation;
import org.apache.http.client.methods.HttpGet;
import org.jboss.logging.Logger;
import org.keycloak.adapters.HttpAdapterUtils;
import org.keycloak.adapters.HttpClientAdapterException;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.common.util.Time;
import org.keycloak.jose.jwk.JSONWebKeySet;
import org.keycloak.jose.jwk.JWK;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.util.JWKSUtils;
import java.security.PublicKey;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* When needed, publicKeys are downloaded by sending request to realm's jwks_url
*
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public class JWKPublicKeyLocator implements PublicKeyLocator {
private static final Logger log = Logger.getLogger(JWKPublicKeyLocator.class);
private Map<String, PublicKey> currentKeys = new ConcurrentHashMap<>();
private volatile int lastRequestTime = 0;
@Override
public PublicKey getPublicKey(String kid, KeycloakDeployment deployment) {
int minTimeBetweenRequests = deployment.getMinTimeBetweenJwksRequests();
// Check if key is in cache.
PublicKey publicKey = currentKeys.get(kid);
if (publicKey != null) {
return publicKey;
}
int currentTime = Time.currentTime();
// Check if we are allowed to send request
if (currentTime > lastRequestTime + minTimeBetweenRequests) {
synchronized (this) {
currentTime = Time.currentTime();
if (currentTime > lastRequestTime + minTimeBetweenRequests) {
sendRequest(deployment);
lastRequestTime = currentTime;
} else {
log.debugf("Won't send request to realm jwks url. Last request time was %d", lastRequestTime);
}
}
}
return currentKeys.get(kid);
}
private void sendRequest(KeycloakDeployment deployment) {
if (log.isTraceEnabled()) {
log.tracef("Going to send request to retrieve new set of realm public keys for client %s", deployment.getResourceName());
}
HttpGet getMethod = new HttpGet(deployment.getJwksUrl());
try {
JSONWebKeySet jwks = HttpAdapterUtils.sendJsonHttpRequest(deployment, getMethod, JSONWebKeySet.class);
Map<String, PublicKey> publicKeys = JWKSUtils.getKeysForUse(jwks, JWK.Use.SIG);
if (log.isDebugEnabled()) {
log.debugf("Realm public keys successfully retrieved for client %s. New kids: %s", deployment.getResourceName(), publicKeys.keySet().toString());
}
// Update current keys
currentKeys.clear();
currentKeys.putAll(publicKeys);
} catch (HttpClientAdapterException e) {
log.error("Error when sending request to retrieve realm keys", e);
}
}
}
@@ -0,0 +1,37 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.rotation;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.jose.jws.JWSInput;
import java.security.PublicKey;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
public interface PublicKeyLocator {
/**
* @param kid
* @param deployment
* @return publicKey, which should be used for verify signature on given "input"
*/
PublicKey getPublicKey(String kid, KeycloakDeployment deployment);
}
@@ -21,10 +21,12 @@ import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.junit.Test;
import org.keycloak.adapters.authentication.ClientIdAndSecretCredentialsProvider;
import org.keycloak.adapters.authentication.JWTClientCredentialsProvider;
import org.keycloak.adapters.rotation.HardcodedPublicKeyLocator;
import org.keycloak.adapters.rotation.JWKPublicKeyLocator;
import org.keycloak.common.enums.RelativeUrlsUsed;
import org.keycloak.common.enums.SslRequired;
import org.keycloak.enums.TokenStore;
import org.keycloak.common.util.PemUtils;
import org.keycloak.enums.TokenStore;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -39,7 +41,11 @@ public class KeycloakDeploymentBuilderTest {
KeycloakDeployment deployment = KeycloakDeploymentBuilder.build(getClass().getResourceAsStream("/keycloak.json"));
assertEquals("demo", deployment.getRealm());
assertEquals("customer-portal", deployment.getResourceName());
assertEquals(PemUtils.decodePublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"), deployment.getRealmKey());
assertTrue(deployment.getPublicKeyLocator() instanceof HardcodedPublicKeyLocator);
assertEquals(PemUtils.decodePublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"),
deployment.getPublicKeyLocator().getPublicKey(null, deployment));
assertEquals("https://localhost:8443/auth/realms/demo/protocol/openid-connect/auth", deployment.getAuthUrl().build().toString());
assertEquals(SslRequired.EXTERNAL, deployment.getSslRequired());
assertTrue(deployment.isUseResourceRoleMappings());
@@ -54,19 +60,24 @@ public class KeycloakDeploymentBuilderTest {
assertEquals("234234-234234-234234", deployment.getResourceCredentials().get("secret"));
assertEquals(ClientIdAndSecretCredentialsProvider.PROVIDER_ID, deployment.getClientAuthenticator().getId());
assertEquals(20, ((ThreadSafeClientConnManager) deployment.getClient().getConnectionManager()).getMaxTotal());
assertEquals("https://backend:8443/auth/realms/demo/protocol/openid-connect/token", deployment.getTokenUrl());
assertEquals("https://localhost:8443/auth/realms/demo/protocol/openid-connect/token", deployment.getTokenUrl());
assertEquals(RelativeUrlsUsed.NEVER, deployment.getRelativeUrls());
assertTrue(deployment.isAlwaysRefreshToken());
assertTrue(deployment.isRegisterNodeAtStartup());
assertEquals(1000, deployment.getRegisterNodePeriod());
assertEquals(TokenStore.COOKIE, deployment.getTokenStore());
assertEquals("email", deployment.getPrincipalAttribute());
assertEquals(10, deployment.getTokenMinimumTimeToLive());
assertEquals(20, deployment.getMinTimeBetweenJwksRequests());
}
@Test
public void loadNoClientCredentials() throws Exception {
KeycloakDeployment deployment = KeycloakDeploymentBuilder.build(getClass().getResourceAsStream("/keycloak-no-credentials.json"));
assertEquals(ClientIdAndSecretCredentialsProvider.PROVIDER_ID, deployment.getClientAuthenticator().getId());
assertTrue(deployment.getPublicKeyLocator() instanceof JWKPublicKeyLocator);
assertEquals(10, deployment.getMinTimeBetweenJwksRequests());
}
@Test
@@ -0,0 +1,23 @@
package org.keycloak.adapters;
import org.junit.Test;
import org.keycloak.representations.oidc.TokenMetadataRepresentation;
import static org.junit.Assert.assertFalse;
/**
* @author github.com/tubbynl
*
*/
public class RefreshableKeycloakSecurityContextTest {
@Test
public void isActive() {
TokenMetadataRepresentation token = new TokenMetadataRepresentation();
token.setActive(true);
token.issuedNow();
RefreshableKeycloakSecurityContext sut = new RefreshableKeycloakSecurityContext(null,null,null,token,null, null, null);
// verify false if null deployment (KEYCLOAK-3050; yielded a npe)
assertFalse(sut.isActive());
}
}
@@ -1,7 +1,6 @@
{
"realm": "demo",
"resource": "customer-portal",
"realm-public-key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB",
"auth-server-url": "https://localhost:8443/auth",
"public-client": true,
"expose-token": true
@@ -24,10 +24,11 @@
"client-keystore": "classpath:/keystore.jks",
"client-keystore-password": "storepass",
"client-key-password": "keypass",
"auth-server-url-for-backend-requests": "https://backend:8443/auth",
"always-refresh-token": true,
"register-node-at-startup": true,
"register-node-period": 1000,
"token-store": "cookie",
"principal-attribute": "email"
"principal-attribute": "email",
"token-minimum-time-to-live": 10,
"min-time-between-jwks-requests": 20
}
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-as7-integration-pom</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-as7-integration-pom</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -22,15 +22,11 @@ import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.deploy.LoginConfig;
import org.apache.catalina.realm.GenericPrincipal;
import org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve;
import org.keycloak.adapters.tomcat.GenericPrincipalFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.security.Principal;
import java.util.List;
/**
* Keycloak authentication valve
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-as7-integration-pom</artifactId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -49,7 +49,6 @@ public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitP
@Override
public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException {
DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit();
String deploymentName = deploymentUnit.getName();
// if it's not a web-app there's nothing to secure
WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY);
@@ -67,24 +66,25 @@ public class KeycloakAdapterConfigDeploymentProcessor implements DeploymentUnitP
// otherwise
LoginConfigMetaData loginConfig = webMetaData.getLoginConfig();
boolean hasSubsystemConfig = service.isSecureDeployment(deploymentName);
boolean hasSubsystemConfig = service.isSecureDeployment(deploymentUnit);
boolean webRequiresKC = loginConfig != null && "KEYCLOAK".equalsIgnoreCase(loginConfig.getAuthMethod());
boolean isConfigured = service.isDeploymentConfigured(deploymentUnit);
if (hasSubsystemConfig || webRequiresKC) {
log.debug("Setting up KEYCLOAK auth method for WAR: " + deploymentName);
if ((hasSubsystemConfig && isConfigured) || webRequiresKC) {
log.debug("Setting up KEYCLOAK auth method for WAR: " + deploymentUnit.getName());
// if secure-deployment configuration exists for web app, we force KEYCLOAK auth method on it
if (hasSubsystemConfig) {
addJSONData(service.getJSON(deploymentName), warMetaData);
addJSONData(service.getJSON(deploymentUnit), warMetaData);
if (loginConfig != null) {
loginConfig.setAuthMethod("KEYCLOAK");
loginConfig.setRealmName(service.getRealmName(deploymentName));
loginConfig.setRealmName(service.getRealmName(deploymentUnit));
} else {
log.warn("Failed to set up KEYCLOAK auth method for WAR: " + deploymentName + " (loginConfig == null)");
log.warn("Failed to set up KEYCLOAK auth method for WAR: " + deploymentUnit.getName() + " (loginConfig == null)");
}
}
addValve(webMetaData);
KeycloakLogger.ROOT_LOGGER.deploymentSecured(deploymentName);
KeycloakLogger.ROOT_LOGGER.deploymentSecured(deploymentUnit.getName());
}
}
@@ -17,9 +17,12 @@
package org.keycloak.subsystem.as7;
import org.jboss.as.server.deployment.DeploymentUnit;
import org.jboss.as.web.deployment.WarMetaData;
import org.jboss.dmr.ModelNode;
import org.jboss.dmr.Property;
import org.jboss.logging.Logger;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import java.util.HashMap;
import java.util.Map;
@@ -154,14 +157,23 @@ public final class KeycloakAdapterConfigService {
return null;
}
public String getRealmName(String deploymentName) {
ModelNode deployment = this.secureDeployments.get(deploymentName);
public String getRealmName(DeploymentUnit deploymentUnit) {
ModelNode deployment = getSecureDeployment(deploymentUnit);
return deployment.get(RealmDefinition.TAG_NAME).asString();
}
public String getJSON(String deploymentName) {
ModelNode deployment = this.secureDeployments.get(deploymentName);
protected boolean isDeploymentConfigured(DeploymentUnit deploymentUnit) {
ModelNode deployment = getSecureDeployment(deploymentUnit);
if (! deployment.isDefined()) {
return false;
}
ModelNode resource = deployment.get(SecureDeploymentDefinition.RESOURCE.getName());
return resource.isDefined();
}
public String getJSON(DeploymentUnit deploymentUnit) {
ModelNode deployment = getSecureDeployment(deploymentUnit);
String realmName = deployment.get(RealmDefinition.TAG_NAME).asString();
ModelNode realm = this.realms.get(realmName);
@@ -184,9 +196,36 @@ public final class KeycloakAdapterConfigService {
}
}
public boolean isSecureDeployment(String deploymentName) {
public boolean isSecureDeployment(DeploymentUnit deploymentUnit) {
//log.info("********* CHECK KEYCLOAK DEPLOYMENT: deployments.size()" + deployments.size());
String deploymentName = preferredDeploymentName(deploymentUnit);
return this.secureDeployments.containsKey(deploymentName);
}
private ModelNode getSecureDeployment(DeploymentUnit deploymentUnit) {
String deploymentName = preferredDeploymentName(deploymentUnit);
return this.secureDeployments.containsKey(deploymentName)
? this.secureDeployments.get(deploymentName)
: new ModelNode();
}
// KEYCLOAK-3273: prefer module name if available
private String preferredDeploymentName(DeploymentUnit deploymentUnit) {
String deploymentName = deploymentUnit.getName();
WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY);
if (warMetaData == null) {
return deploymentName;
}
JBossWebMetaData webMetaData = warMetaData.getMergedJBossWebMetaData();
if (webMetaData == null) {
return deploymentName;
}
String moduleName = webMetaData.getModuleName();
if (moduleName != null) return moduleName + ".war";
return deploymentName;
}
}
@@ -46,8 +46,7 @@ public abstract class KeycloakDependencyProcessor implements DeploymentUnitProce
public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException {
final DeploymentUnit deploymentUnit = phaseContext.getDeploymentUnit();
String deploymentName = deploymentUnit.getName();
if (!KeycloakAdapterConfigService.getInstance().isSecureDeployment(deploymentName)) {
if (!KeycloakAdapterConfigService.getInstance().isSecureDeployment(deploymentUnit)) {
WarMetaData warMetaData = deploymentUnit.getAttachment(WarMetaData.ATTACHMENT_KEY);
if (warMetaData == null) {
return;
@@ -25,7 +25,6 @@ import org.jboss.as.server.AbstractDeploymentChainStep;
import org.jboss.as.server.DeploymentProcessorTarget;
import org.jboss.as.server.deployment.Phase;
import org.jboss.dmr.ModelNode;
import org.jboss.msc.service.ServiceController;
import java.util.List;
@@ -86,7 +86,7 @@ class KeycloakSubsystemParser implements XMLStreamConstants, XMLElementReader<Li
if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(addRealm)) {
//TODO: externalize the message
throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false.");
throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-manager is false.");
}
list.add(addRealm);
@@ -117,7 +117,7 @@ class KeycloakSubsystemParser implements XMLStreamConstants, XMLElementReader<Li
* TODO need to check realm-ref first.
if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(addSecureDeployment)) {
//TODO: externalize the message
throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false.");
throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-manager is false.");
}
*/
@@ -157,7 +157,7 @@ class KeycloakSubsystemParser implements XMLStreamConstants, XMLElementReader<Li
credentialsToAdd.add(addCredential);
} else {
for (Map.Entry<String, String> entry : values.entrySet()) {
ModelNode addCredential = getCredentialToAdd(parent, name + "" + entry.getKey(), entry.getValue());
ModelNode addCredential = getCredentialToAdd(parent, name + "." + entry.getKey(), entry.getValue());
credentialsToAdd.add(addCredential);
}
}
@@ -46,7 +46,7 @@ public final class RealmAddHandler extends AbstractAddStepHandler {
if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(model.clone())) {
//TODO: externalize message
throw new OperationFailedException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false.");
throw new OperationFailedException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-manager is false.");
}
}
@@ -23,8 +23,6 @@ import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.OperationFailedException;
import org.jboss.dmr.ModelNode;
import java.util.List;
/**
* Update an attribute on a realm.
*
@@ -23,6 +23,7 @@ import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
import org.jboss.as.controller.SimpleResourceDefinition;
import org.jboss.as.controller.descriptions.ModelDescriptionConstants;
import org.jboss.as.controller.operations.common.GenericSubsystemDescribeHandler;
import org.jboss.as.controller.operations.validation.IntRangeValidator;
import org.jboss.as.controller.operations.validation.StringLengthValidator;
import org.jboss.as.controller.registry.ManagementResourceRegistration;
import org.jboss.as.controller.registry.OperationEntry;
@@ -79,6 +80,24 @@ class SecureDeploymentDefinition extends SimpleResourceDefinition {
.setAllowExpression(true)
.setDefaultValue(new ModelNode(false))
.build();
protected static final SimpleAttributeDefinition TURN_OFF_CHANGE_SESSION =
new SimpleAttributeDefinitionBuilder("turn-off-change-session-id-on-login", ModelType.BOOLEAN, true)
.setXmlName("turn-off-change-session-id-on-login")
.setAllowExpression(true)
.setDefaultValue(new ModelNode(false))
.build();
protected static final SimpleAttributeDefinition TOKEN_MINIMUM_TIME_TO_LIVE =
new SimpleAttributeDefinitionBuilder("token-minimum-time-to-live", ModelType.INT, true)
.setXmlName("token-minimum-time-to-live")
.setValidator(new IntRangeValidator(-1, true))
.setAllowExpression(true)
.build();
protected static final SimpleAttributeDefinition MIN_TIME_BETWEEN_JWKS_REQUESTS =
new SimpleAttributeDefinitionBuilder("min-time-between-jwks-requests", ModelType.INT, true)
.setXmlName("min-time-between-jwks-requests")
.setValidator(new IntRangeValidator(-1, true))
.setAllowExpression(true)
.build();
protected static final List<SimpleAttributeDefinition> DEPLOYMENT_ONLY_ATTRIBUTES = new ArrayList<SimpleAttributeDefinition>();
static {
@@ -88,6 +107,9 @@ class SecureDeploymentDefinition extends SimpleResourceDefinition {
DEPLOYMENT_ONLY_ATTRIBUTES.add(BEARER_ONLY);
DEPLOYMENT_ONLY_ATTRIBUTES.add(ENABLE_BASIC_AUTH);
DEPLOYMENT_ONLY_ATTRIBUTES.add(PUBLIC_CLIENT);
DEPLOYMENT_ONLY_ATTRIBUTES.add(TURN_OFF_CHANGE_SESSION);
DEPLOYMENT_ONLY_ATTRIBUTES.add(TOKEN_MINIMUM_TIME_TO_LIVE);
DEPLOYMENT_ONLY_ATTRIBUTES.add(MIN_TIME_BETWEEN_JWKS_REQUESTS);
}
protected static final List<SimpleAttributeDefinition> ALL_ATTRIBUTES = new ArrayList<SimpleAttributeDefinition>();
@@ -80,6 +80,8 @@ keycloak.secure-deployment.register-node-period=how often to re-register node
keycloak.secure-deployment.token-store=cookie or session storage for auth session data
keycloak.secure-deployment.principal-attribute=token attribute to use to set Principal name
keycloak.secure-deployment.turn-off-change-session-id-on-login=The session id is changed by default on a successful login. Change this to true if you want to turn this off
keycloak.secure-deployment.token-minimum-time-to-live=The adapter will refresh the token if the current token is expired OR will expire in 'token-minimum-time-to-live' seconds or less
keycloak.secure-deployment.min-time-between-jwks-requests=If adapter recognize token signed by unknown public key, it will try to download new public key from keycloak server. However it won't try to download if already tried it in less than 'min-time-between-jwks-requests' seconds
keycloak.secure-deployment.credential=Credential value
@@ -105,6 +105,8 @@
<xs:element name="principal-attribute" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="enable-basic-auth" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
<xs:element name="turn-off-change-session-id-on-login" type="xs:boolean" minOccurs="0" maxOccurs="1" />
<xs:element name="token-minimum-time-to-live" type="xs:integer" minOccurs="0" maxOccurs="1"/>
<xs:element name="min-time-between-jwks-requests" type="xs:integer" minOccurs="0" maxOccurs="1"/>
</xs:all>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
+1 -1
View File
@@ -20,7 +20,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<name>Keycloak AS7 / JBoss EAP 6 Integration</name>
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -19,11 +19,11 @@ package org.keycloak.adapters.installed;
import org.keycloak.OAuth2Constants;
import org.keycloak.OAuthErrorException;
import org.keycloak.RSATokenVerifier;
import org.keycloak.common.VerificationException;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.adapters.ServerRequest;
import org.keycloak.adapters.rotation.AdapterRSATokenVerifier;
import org.keycloak.common.VerificationException;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.jose.jws.JWSInputException;
import org.keycloak.representations.AccessToken;
@@ -119,6 +119,7 @@ public class KeycloakInstalled {
.queryParam(OAuth2Constants.CLIENT_ID, deployment.getResourceName())
.queryParam(OAuth2Constants.REDIRECT_URI, redirectUri)
.queryParam(OAuth2Constants.STATE, state)
.queryParam(OAuth2Constants.SCOPE, OAuth2Constants.SCOPE_OPENID)
.build().toString();
Desktop.getDesktop().browse(new URI(authUrl));
@@ -175,6 +176,7 @@ public class KeycloakInstalled {
.queryParam(OAuth2Constants.RESPONSE_TYPE, OAuth2Constants.CODE)
.queryParam(OAuth2Constants.CLIENT_ID, deployment.getResourceName())
.queryParam(OAuth2Constants.REDIRECT_URI, redirectUri)
.queryParam(OAuth2Constants.SCOPE, OAuth2Constants.SCOPE_OPENID)
.build().toString();
printer.println("Open the following URL in a browser. After login copy/paste the code back and press <enter>");
@@ -211,7 +213,7 @@ public class KeycloakInstalled {
refreshToken = tokenResponse.getRefreshToken();
idTokenString = tokenResponse.getIdToken();
token = RSATokenVerifier.verifyToken(tokenString, deployment.getRealmKey(), deployment.getRealmInfoUrl());
token = AdapterRSATokenVerifier.verifyToken(tokenString, deployment);
if (idTokenString != null) {
try {
JWSInput input = new JWSInput(idTokenString);
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -20,8 +20,6 @@ package org.keycloak.jaxrs;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.adapters.AdapterDeploymentContext;
import org.keycloak.adapters.AdapterUtils;
import org.keycloak.adapters.spi.AuthChallenge;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.AuthenticatedActionsHandler;
import org.keycloak.adapters.BasicAuthRequestAuthenticator;
import org.keycloak.adapters.BearerTokenRequestAuthenticator;
@@ -31,6 +29,8 @@ import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.adapters.NodesRegistrationManagement;
import org.keycloak.adapters.PreAuthActionsHandler;
import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
import org.keycloak.adapters.spi.AuthChallenge;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.spi.UserSessionManagement;
import org.keycloak.common.constants.GenericConstants;
@@ -40,7 +40,6 @@ import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -17,22 +17,21 @@
package org.keycloak.jaxrs;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import javax.security.cert.X509Certificate;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.SecurityContext;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.OIDCHttpFacade;
import org.keycloak.adapters.spi.AuthenticationError;
import org.keycloak.adapters.spi.LogoutError;
import org.keycloak.common.util.HostUtils;
import javax.security.cert.X509Certificate;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.SecurityContext;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
@@ -20,6 +20,7 @@ package org.keycloak.jaxrs;
import org.keycloak.AbstractOAuthClient;
import org.keycloak.OAuth2Constants;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.util.TokenUtil;
import javax.ws.rs.BadRequestException;
import javax.ws.rs.InternalServerErrorException;
@@ -85,14 +86,13 @@ public class JaxrsOAuthClient extends AbstractOAuthClient {
}
public Response redirect(UriInfo uriInfo, String redirectUri) {
String state = getStateCode();
String scopeParam = TokenUtil.attachOIDCScope(scope);
UriBuilder uriBuilder = UriBuilder.fromUri(authUrl)
.queryParam(OAuth2Constants.CLIENT_ID, clientId)
.queryParam(OAuth2Constants.REDIRECT_URI, redirectUri)
.queryParam(OAuth2Constants.STATE, state);
if (scope != null) {
uriBuilder.queryParam(OAuth2Constants.SCOPE, scope);
}
.queryParam(OAuth2Constants.STATE, state)
.queryParam(OAuth2Constants.SCOPE, scopeParam);
URI url = uriBuilder.build();
@@ -17,18 +17,17 @@
package org.keycloak.jaxrs;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.logging.Logger;
import org.keycloak.adapters.KeycloakConfigResolver;
import org.keycloak.common.constants.GenericConstants;
import org.osgi.framework.BundleContext;
import javax.annotation.Priority;
import javax.ws.rs.Priorities;
import javax.ws.rs.container.PreMatching;
import org.keycloak.adapters.KeycloakConfigResolver;
import org.keycloak.common.constants.GenericConstants;
import org.osgi.framework.BundleContext;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.logging.Logger;
/**
* Variant of JaxrsBearerTokenFilter, which can be used to properly use resources from current osgi bundle
+2 -2
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -60,7 +60,7 @@
<groupId>org.keycloak</groupId>
<artifactId>keycloak-jetty-adapter-spi</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-core</artifactId>
</dependency>
@@ -18,6 +18,8 @@
package org.keycloak.adapters.jetty.core;
import org.eclipse.jetty.security.DefaultUserIdentity;
import org.eclipse.jetty.security.IdentityService;
import org.eclipse.jetty.security.LoginService;
import org.eclipse.jetty.security.ServerAuthException;
import org.eclipse.jetty.security.UserAuthentication;
import org.eclipse.jetty.security.authentication.DeferredAuthentication;
@@ -25,28 +27,26 @@ import org.eclipse.jetty.security.authentication.FormAuthenticator;
import org.eclipse.jetty.security.authentication.LoginAuthenticator;
import org.eclipse.jetty.server.Authentication;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Response;
import org.eclipse.jetty.server.UserIdentity;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.util.URIUtil;
import org.jboss.logging.Logger;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.AdapterDeploymentContext;
import org.keycloak.adapters.AdapterTokenStore;
import org.keycloak.adapters.AdapterUtils;
import org.keycloak.adapters.jetty.spi.JettyHttpFacade;
import org.keycloak.adapters.jetty.spi.JettyUserSessionManagement;
import org.keycloak.adapters.spi.AuthChallenge;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.AuthenticatedActionsHandler;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.adapters.KeycloakConfigResolver;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.adapters.NodesRegistrationManagement;
import org.keycloak.adapters.PreAuthActionsHandler;
import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
import org.keycloak.adapters.jetty.spi.JettyHttpFacade;
import org.keycloak.adapters.jetty.spi.JettyUserSessionManagement;
import org.keycloak.adapters.spi.AuthChallenge;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.constants.AdapterConstants;
import org.keycloak.enums.TokenStore;
import org.keycloak.representations.adapters.config.AdapterConfig;
@@ -59,7 +59,6 @@ import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Set;
@@ -135,10 +134,44 @@ public abstract class AbstractKeycloakJettyAuthenticator extends LoginAuthentica
return new DefaultUserIdentity(theSubject, principal, theRoles);
}
private class DummyLoginService implements LoginService {
@Override
public String getName() {
return null;
}
@Override
public UserIdentity login(String username, Object credentials) {
return null;
}
@Override
public boolean validate(UserIdentity user) {
return false;
}
@Override
public IdentityService getIdentityService() {
return null;
}
@Override
public void setIdentityService(IdentityService service) {
}
@Override
public void logout(UserIdentity user) {
}
}
@Override
public void setConfiguration(AuthConfiguration configuration) {
//super.setConfiguration(configuration);
initializeKeycloak();
// need this so that getUserPrincipal does not throw NPE
_loginService = new DummyLoginService();
String error = configuration.getInitParameter(FormAuthenticator.__FORM_ERROR_PAGE);
setErrorPage(error);
}
@@ -304,13 +337,13 @@ public abstract class AbstractKeycloakJettyAuthenticator extends LoginAuthentica
Authentication authentication = request.getAuthentication();
if (!(authentication instanceof KeycloakAuthentication)) {
UserIdentity userIdentity = createIdentity(principal);
authentication = createAuthentication(userIdentity);
authentication = createAuthentication(userIdentity, request);
request.setAuthentication(authentication);
}
return authentication;
}
protected abstract Authentication createAuthentication(UserIdentity userIdentity);
protected abstract Authentication createAuthentication(UserIdentity userIdentity, Request request);
public static abstract class KeycloakAuthentication extends UserAuthentication {
public KeycloakAuthentication(String method, UserIdentity userIdentity) {
@@ -23,11 +23,11 @@ import org.keycloak.KeycloakPrincipal;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.AdapterTokenStore;
import org.keycloak.adapters.CookieTokenStore;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.OidcKeycloakAccount;
import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
import org.keycloak.adapters.RequestAuthenticator;
import org.keycloak.adapters.spi.HttpFacade;
/**
* Handle storage of token info in cookie. Per-request object.
@@ -23,12 +23,12 @@ import org.keycloak.KeycloakPrincipal;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.AdapterTokenStore;
import org.keycloak.adapters.AdapterUtils;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.OAuthRequestAuthenticator;
import org.keycloak.adapters.OidcKeycloakAccount;
import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
import org.keycloak.adapters.RequestAuthenticator;
import org.keycloak.adapters.spi.HttpFacade;
import javax.servlet.http.HttpSession;
import java.security.Principal;
@@ -21,13 +21,13 @@ import org.eclipse.jetty.server.Request;
import org.jboss.logging.Logger;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.adapters.AdapterTokenStore;
import org.keycloak.adapters.AdapterUtils;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.OidcKeycloakAccount;
import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
import org.keycloak.adapters.RequestAuthenticator;
import org.keycloak.adapters.spi.AdapterSessionStore;
import javax.servlet.http.HttpSession;
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -20,8 +20,8 @@ package org.keycloak.adapters.jetty;
import org.eclipse.jetty.security.authentication.FormAuthenticator;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.MultiMap;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.adapters.jetty.spi.JettyHttpFacade;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.common.util.MultivaluedHashMap;
import javax.servlet.http.HttpSession;
@@ -50,7 +50,7 @@ public class KeycloakJettyAuthenticator extends AbstractKeycloakJettyAuthenticat
}
@Override
protected Authentication createAuthentication(UserIdentity userIdentity) {
protected Authentication createAuthentication(UserIdentity userIdentity, Request request) {
return new KeycloakAuthentication(getAuthMethod(), userIdentity) {
@Override
public void logout() {
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -21,8 +21,8 @@ import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.security.authentication.FormAuthenticator;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.MultiMap;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.adapters.jetty.spi.JettyHttpFacade;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.common.util.MultivaluedHashMap;
import javax.servlet.http.HttpSession;
@@ -52,7 +52,7 @@ public class KeycloakJettyAuthenticator extends AbstractKeycloakJettyAuthenticat
}
@Override
protected Authentication createAuthentication(UserIdentity userIdentity) {
protected Authentication createAuthentication(UserIdentity userIdentity, Request request) {
return new KeycloakAuthentication(getAuthMethod(), userIdentity) {
@Override
public void logout() {
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -21,8 +21,8 @@ import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.security.authentication.FormAuthenticator;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.MultiMap;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.adapters.jetty.spi.JettyHttpFacade;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.common.util.MultivaluedHashMap;
import javax.servlet.http.HttpSession;
@@ -47,7 +47,7 @@ public class KeycloakJettyAuthenticator extends AbstractKeycloakJettyAuthenticat
}
@Override
protected Authentication createAuthentication(UserIdentity userIdentity) {
protected Authentication createAuthentication(UserIdentity userIdentity, Request request) {
return new KeycloakAuthentication(getAuthMethod(), userIdentity) {
@Override
public void logout() {
+156
View File
@@ -0,0 +1,156 @@
<?xml version="1.0"?>
<!--
~ Copyright 2016 Red Hat, Inc. and/or its affiliates
~ and other contributors as indicated by the @author tags.
~
~ 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.
-->
<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>2.4.0.CR1</version>
<relativePath>../../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>keycloak-jetty93-adapter</artifactId>
<name>Keycloak Jetty 9.3.x Integration</name>
<properties>
<jetty9.version>9.3.9.v20160517</jetty9.version>
<keycloak.osgi.export>
org.keycloak.adapters.jetty.*
</keycloak.osgi.export>
<keycloak.osgi.import>
org.eclipse.jetty.*;resolution:=optional,
javax.servlet.*;version="[3.0,4)";resolution:=optional,
org.keycloak.*;version="${project.version}",
*;resolution:=optional
</keycloak.osgi.import>
</properties>
<description />
<dependencies>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>${jboss.logging.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-core</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-jetty-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jetty9.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
<version>${jetty9.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
<version>${jetty9.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</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>
@@ -0,0 +1,47 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.jetty;
import org.eclipse.jetty.server.Request;
import org.keycloak.adapters.AdapterTokenStore;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.jetty.core.JettyRequestAuthenticator;
import org.keycloak.adapters.spi.HttpFacade;
import javax.servlet.http.HttpSession;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class Jetty93RequestAuthenticator extends JettyRequestAuthenticator {
public Jetty93RequestAuthenticator(HttpFacade facade, KeycloakDeployment deployment, AdapterTokenStore tokenStore, int sslRedirectPort, Request request) {
super(facade, deployment, tokenStore, sslRedirectPort, request);
}
@Override
protected String changeHttpSessionId(boolean create) {
Request request = this.request;
HttpSession session = request.getSession(false);
if (session == null) {
return request.getSession(true).getId();
}
if (!deployment.isTurnOffChangeSessionIdOnLogin()) return request.changeSessionId();
else return session.getId();
}
}
@@ -0,0 +1,111 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.jetty;
import org.eclipse.jetty.security.authentication.FormAuthenticator;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.MultiMap;
import org.keycloak.adapters.jetty.spi.JettyHttpFacade;
import org.keycloak.adapters.spi.AdapterSessionStore;
import org.keycloak.common.util.MultivaluedHashMap;
import javax.servlet.http.HttpSession;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class JettyAdapterSessionStore implements AdapterSessionStore {
public static final String CACHED_FORM_PARAMETERS = "__CACHED_FORM_PARAMETERS";
protected Request myRequest;
public JettyAdapterSessionStore(Request request) {
this.myRequest = request; // for IDE/compilation purposes
}
protected MultiMap<String> extractFormParameters(Request base_request) {
MultiMap<String> formParameters = new MultiMap<String>();
base_request.extractFormParameters(formParameters);
return formParameters;
}
protected void restoreFormParameters(MultiMap<String> j_post, Request base_request) {
base_request.setContentParameters(j_post);
}
public boolean restoreRequest() {
HttpSession session = myRequest.getSession(false);
if (session == null) return false;
synchronized (session) {
String j_uri = (String) session.getAttribute(FormAuthenticator.__J_URI);
if (j_uri != null) {
// check if the request is for the same url as the original and restore
// params if it was a post
StringBuffer buf = myRequest.getRequestURL();
if (myRequest.getQueryString() != null)
buf.append("?").append(myRequest.getQueryString());
if (j_uri.equals(buf.toString())) {
String method = (String)session.getAttribute(JettyHttpFacade.__J_METHOD);
myRequest.setMethod(method);
MultivaluedHashMap<String, String> j_post = (MultivaluedHashMap<String, String>) session.getAttribute(CACHED_FORM_PARAMETERS);
if (j_post != null) {
myRequest.setContentType("application/x-www-form-urlencoded");
MultiMap<String> map = new MultiMap<String>();
for (String key : j_post.keySet()) {
for (String val : j_post.getList(key)) {
map.add(key, val);
}
}
restoreFormParameters(map, myRequest);
}
session.removeAttribute(FormAuthenticator.__J_URI);
session.removeAttribute(JettyHttpFacade.__J_METHOD);
session.removeAttribute(FormAuthenticator.__J_POST);
}
return true;
}
}
return false;
}
public void saveRequest() {
// remember the current URI
HttpSession session = myRequest.getSession();
synchronized (session) {
// But only if it is not set already, or we save every uri that leads to a login form redirect
if (session.getAttribute(FormAuthenticator.__J_URI) == null) {
StringBuffer buf = myRequest.getRequestURL();
if (myRequest.getQueryString() != null)
buf.append("?").append(myRequest.getQueryString());
session.setAttribute(FormAuthenticator.__J_URI, buf.toString());
session.setAttribute(JettyHttpFacade.__J_METHOD, myRequest.getMethod());
if ("application/x-www-form-urlencoded".equals(myRequest.getContentType()) && "POST".equalsIgnoreCase(myRequest.getMethod())) {
MultiMap<String> formParameters = extractFormParameters(myRequest);
MultivaluedHashMap<String, String> map = new MultivaluedHashMap<String, String>();
for (String key : formParameters.keySet()) {
for (Object value : formParameters.getValues(key)) {
map.add(key, (String) value);
}
}
session.setAttribute(CACHED_FORM_PARAMETERS, map);
}
}
}
}
}
@@ -0,0 +1,69 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.jetty;
import org.eclipse.jetty.server.Authentication;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.UserIdentity;
import org.keycloak.adapters.AdapterTokenStore;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator;
import org.keycloak.adapters.jetty.core.JettyRequestAuthenticator;
import org.keycloak.adapters.jetty.core.JettySessionTokenStore;
import org.keycloak.adapters.jetty.spi.JettyHttpFacade;
import javax.servlet.ServletRequest;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class KeycloakJettyAuthenticator extends AbstractKeycloakJettyAuthenticator {
public KeycloakJettyAuthenticator() {
super();
}
@Override
protected Request resolveRequest(ServletRequest req) {
return Request.getBaseRequest(req);
}
@Override
protected Authentication createAuthentication(UserIdentity userIdentity, final Request request) {
return new KeycloakAuthentication(getAuthMethod(), userIdentity) {
@Override
public void logout() {
logoutCurrent(request);
}
};
}
@Override
public AdapterTokenStore createSessionTokenStore(Request request, KeycloakDeployment resolvedDeployment) {
return new JettySessionTokenStore(request, resolvedDeployment, new JettyAdapterSessionStore(request));
}
@Override
protected JettyRequestAuthenticator createRequestAuthenticator(Request request, JettyHttpFacade facade,
KeycloakDeployment deployment, AdapterTokenStore tokenStore) {
return new Jetty93RequestAuthenticator(facade, deployment, tokenStore, -1, request);
}
}
+3 -2
View File
@@ -20,7 +20,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<name>Keycloak Jetty Integration</name>
@@ -33,7 +33,8 @@
<modules>
<module>jetty-core</module>
<module>jetty8.1</module>
<module>jetty9.2</module>
<module>jetty9.1</module>
<module>jetty9.2</module>
<module>jetty9.3</module>
</modules>
</project>
+20 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -58,6 +58,25 @@
<goal>minify</goal>
</goals>
</execution>
<execution>
<id>min-authz-js</id>
<phase>compile</phase>
<configuration>
<charset>utf-8</charset>
<webappSourceDir>${basedir}/src/main/resources</webappSourceDir>
<jsSourceDir>.</jsSourceDir>
<jsSourceFiles>
<jsSourceFile>keycloak-authz.js</jsSourceFile>
</jsSourceFiles>
<webappTargetDir>${project.build.directory}/classes</webappTargetDir>
<jsTargetDir>.</jsTargetDir>
<jsFinalFile>keycloak-authz.js</jsFinalFile>
</configuration>
<goals>
<goal>minify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
@@ -0,0 +1,181 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.
*
*/
(function( window, undefined ) {
var KeycloakAuthorization = function (keycloak) {
var _instance = this;
this.rpt = null;
this.init = function () {
var request = new XMLHttpRequest();
request.open('GET', keycloak.authServerUrl + '/realms/' + keycloak.realm + '/.well-known/uma-configuration');
request.onreadystatechange = function () {
if (request.readyState == 4) {
if (request.status == 200) {
_instance.config = JSON.parse(request.responseText);
} else {
console.error('Could not obtain configuration from server.');
}
}
}
request.send(null);
};
/**
* This method enables client applications to better integrate with resource servers protected by a Keycloak
* policy enforcer.
*
* In this case, the resource server will respond with a 401 status code and a WWW-Authenticate header holding the
* necessary information to ask a Keycloak server for authorization data using both UMA and Entitlement protocol,
* depending on how the policy enforcer at the resource server was configured.
*/
this.authorize = function (wwwAuthenticateHeader) {
this.then = function (onGrant, onDeny, onError) {
if (wwwAuthenticateHeader.indexOf('UMA') != -1) {
var params = wwwAuthenticateHeader.split(',');
for (i = 0; i < params.length; i++) {
var param = params[i].split('=');
if (param[0] == 'ticket') {
var request = new XMLHttpRequest();
request.open('POST', _instance.config.rpt_endpoint, true);
request.setRequestHeader('Content-Type', 'application/json')
request.setRequestHeader('Authorization', 'Bearer ' + keycloak.token)
request.onreadystatechange = function () {
if (request.readyState == 4) {
var status = request.status;
if (status >= 200 && status < 300) {
var rpt = JSON.parse(request.responseText).rpt;
_instance.rpt = rpt;
onGrant(rpt);
} else if (status == 403) {
if (onDeny) {
onDeny();
} else {
console.error('Authorization request was denied by the server.');
}
} else {
if (onError) {
onError();
} else {
console.error('Could not obtain authorization data from server.');
}
}
}
};
var ticket = param[1].substring(1, param[1].length - 1).trim();
request.send(JSON.stringify(
{
ticket: ticket,
rpt: _instance.rpt
}
));
}
}
} else if (wwwAuthenticateHeader.indexOf('KC_ETT') != -1) {
var params = wwwAuthenticateHeader.substring('KC_ETT'.length).trim().split(',');
var clientId = null;
for (i = 0; i < params.length; i++) {
var param = params[i].split('=');
if (param[0] == 'realm') {
clientId = param[1].substring(1, param[1].length - 1).trim();
}
}
_instance.entitlement(clientId).then(onGrant, onDeny, onError);
}
};
return this;
};
/**
* Obtains all entitlements from a Keycloak Server based on a give resourceServerId.
*/
this.entitlement = function (resourceSeververId, entitlementRequest ) {
this.then = function (onGrant, onDeny, onError) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState == 4) {
var status = request.status;
if (status >= 200 && status < 300) {
var rpt = JSON.parse(request.responseText).rpt;
_instance.rpt = rpt;
onGrant(rpt);
} else if (status == 403) {
if (onDeny) {
onDeny();
} else {
console.error('Authorization request was denied by the server.');
}
} else {
if (onError) {
onError();
} else {
console.error('Could not obtain authorization data from server.');
}
}
}
};
var erJson = null
if(entitlementRequest) {
request.open('POST', keycloak.authServerUrl + '/realms/' + keycloak.realm + '/authz/entitlement/' + resourceSeververId, true);
request.setRequestHeader("Content-type", "application/json");
erJson = JSON.stringify(entitlementRequest)
} else {
request.open('GET', keycloak.authServerUrl + '/realms/' + keycloak.realm + '/authz/entitlement/' + resourceSeververId, true);
}
request.setRequestHeader('Authorization', 'Bearer ' + keycloak.token)
request.send(erJson);
};
return this;
};
this.init(this);
};
if ( typeof module === "object" && module && typeof module.exports === "object" ) {
module.exports = KeycloakAuthorization;
} else {
window.KeycloakAuthorization = KeycloakAuthorization;
if ( typeof define === "function" && define.amd ) {
define( "keycloak-authorization", [], function () { return KeycloakAuthorization; } );
}
}
})( window );
+238 -56
View File
@@ -25,20 +25,29 @@
var kc = this;
var adapter;
var refreshQueue = [];
var callbackStorage;
var loginIframe = {
enable: true,
callbackMap: [],
callbackList: [],
interval: 5
};
kc.init = function (initOptions) {
kc.authenticated = false;
if (window.Cordova) {
callbackStorage = createCallbackStorage();
if (initOptions && initOptions.adapter === 'cordova') {
adapter = loadAdapter('cordova');
} else {
} else if (initOptions && initOptions.adapter === 'default') {
adapter = loadAdapter();
} else {
if (window.Cordova) {
adapter = loadAdapter('cordova');
} else {
adapter = loadAdapter();
}
}
if (initOptions) {
@@ -94,8 +103,8 @@
initPromise.promise.success(function() {
kc.onReady && kc.onReady(kc.authenticated);
promise.setSuccess(kc.authenticated);
}).error(function() {
promise.setError();
}).error(function(errorData) {
promise.setError(errorData);
});
var configPromise = loadConfig(config);
@@ -145,24 +154,39 @@
return;
} else if (initOptions) {
if (initOptions.token || initOptions.refreshToken) {
setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken, false);
kc.timeSkew = initOptions.timeSkew || 0;
setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);
if (loginIframe.enable) {
setupCheckLoginIframe().success(function() {
checkLoginIframe().success(function () {
kc.onAuthSuccess && kc.onAuthSuccess();
initPromise.setSuccess();
}).error(function () {
kc.onAuthError && kc.onAuthError();
if (initOptions.onLoad) {
onLoad();
} else {
initPromise.setError();
}
});
});
} else {
initPromise.setSuccess();
kc.updateToken(-1).success(function() {
kc.onAuthSuccess && kc.onAuthSuccess();
initPromise.setSuccess();
}).error(function() {
kc.onAuthError && kc.onAuthError();
if (initOptions.onLoad) {
onLoad();
} else {
initPromise.setError();
}
});
}
} else if (initOptions.onLoad) {
onLoad();
} else {
initPromise.setSuccess();
}
} else {
initPromise.setSuccess();
@@ -186,17 +210,26 @@
var nonce = createUUID();
var redirectUri = adapter.redirectUri(options);
if (options && options.prompt) {
redirectUri += (redirectUri.indexOf('?') == -1 ? '?' : '&') + 'prompt=' + options.prompt;
var callbackState = {
state: state,
nonce: nonce,
redirectUri: encodeURIComponent(redirectUri),
}
sessionStorage.oauthState = JSON.stringify({ state: state, nonce: nonce, redirectUri: encodeURIComponent(redirectUri) });
if (options && options.prompt) {
callbackState.prompt = options.prompt;
}
callbackStorage.add(callbackState);
var action = 'auth';
if (options && options.action == 'register') {
action = 'registrations';
}
var scope = (options && options.scope) ? "openid " + options.scope : "openid";
var url = getRealmUrl()
+ '/protocol/openid-connect/' + action
+ '?client_id=' + encodeURIComponent(kc.clientId)
@@ -204,12 +237,17 @@
+ '&state=' + encodeURIComponent(state)
+ '&nonce=' + encodeURIComponent(nonce)
+ '&response_mode=' + encodeURIComponent(kc.responseMode)
+ '&response_type=' + encodeURIComponent(kc.responseType);
+ '&response_type=' + encodeURIComponent(kc.responseType)
+ '&scope=' + encodeURIComponent(scope);
if (options && options.prompt) {
url += '&prompt=' + encodeURIComponent(options.prompt);
}
if (options && options.maxAge) {
url += '&max_age=' + encodeURIComponent(options.maxAge);
}
if (options && options.loginHint) {
url += '&login_hint=' + encodeURIComponent(options.loginHint);
}
@@ -218,10 +256,6 @@
url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);
}
if (options && options.scope) {
url += '&scope=' + encodeURIComponent(options.scope);
}
if (options && options.locale) {
url += '&ui_locales=' + encodeURIComponent(options.locale);
}
@@ -335,11 +369,10 @@
throw 'Not authenticated';
}
var expiresIn = kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew;
var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;
if (minValidity) {
expiresIn -= minValidity;
}
return expiresIn < 0;
}
@@ -354,7 +387,20 @@
minValidity = minValidity || 5;
var exec = function() {
if (!kc.isTokenExpired(minValidity)) {
var refreshToken = false;
if (kc.timeSkew == -1) {
console.info('Skew ' + kc.timeSkew);
refreshToken = true;
console.info('[KEYCLOAK] Refreshing token: time skew not set');
} else if (minValidity == -1) {
refreshToken = true;
console.info('[KEYCLOAK] Refreshing token: forced refresh');
} else if (kc.isTokenExpired(minValidity)) {
refreshToken = true;
console.info('[KEYCLOAK] Refreshing token: token expired');
}
if (!refreshToken) {
promise.setSuccess(false);
} else {
var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;
@@ -366,6 +412,7 @@
var req = new XMLHttpRequest();
req.open('POST', url, true);
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.withCredentials = true;
if (kc.clientId && kc.clientSecret) {
req.setRequestHeader('Authorization', 'Basic ' + btoa(kc.clientId + ':' + kc.clientSecret));
@@ -378,18 +425,21 @@
req.onreadystatechange = function () {
if (req.readyState == 4) {
if (req.status == 200) {
console.info('[KEYCLOAK] Token refreshed');
timeLocal = (timeLocal + new Date().getTime()) / 2;
var tokenResponse = JSON.parse(req.responseText);
setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], true);
kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;
setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);
kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();
for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {
p.setSuccess(true);
}
} else {
console.warn('[KEYCLOAK] Failed to refresh token');
kc.onAuthRefreshError && kc.onAuthRefreshError();
for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {
p.setError(true);
@@ -419,7 +469,7 @@
kc.clearToken = function() {
if (kc.token) {
setToken(null, null, null, true);
setToken(null, null, null);
kc.onAuthLogout && kc.onAuthLogout();
if (kc.loginRequired) {
kc.login();
@@ -452,8 +502,9 @@
if (error) {
if (prompt != 'none') {
kc.onAuthError && kc.onAuthError();
promise && promise.setError();
var errorData = { error: error, error_description: oauth.error_description };
kc.onAuthError && kc.onAuthError(errorData);
promise && promise.setError(errorData);
} else {
promise && promise.setSuccess();
}
@@ -499,18 +550,16 @@
function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {
timeLocal = (timeLocal + new Date().getTime()) / 2;
setToken(accessToken, refreshToken, idToken, true);
setToken(accessToken, refreshToken, idToken, timeLocal);
if ((kc.tokenParsed && kc.tokenParsed.nonce != oauth.storedNonce) ||
(kc.refreshTokenParsed && kc.refreshTokenParsed.nonce != oauth.storedNonce) ||
(kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce)) {
console.log('invalid nonce!');
console.info('[KEYCLOAK] Invalid nonce, clearing token');
kc.clearToken();
promise && promise.setError();
} else {
kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;
if (fulfillPromise) {
kc.onAuthSuccess && kc.onAuthSuccess();
promise && promise.setSuccess();
@@ -583,7 +632,7 @@
return promise.promise;
}
function setToken(token, refreshToken, idToken, useTokenTime) {
function setToken(token, refreshToken, idToken, timeLocal) {
if (kc.tokenTimeoutHandle) {
clearTimeout(kc.tokenTimeoutHandle);
kc.tokenTimeoutHandle = null;
@@ -602,10 +651,24 @@
kc.realmAccess = kc.tokenParsed.realm_access;
kc.resourceAccess = kc.tokenParsed.resource_access;
if (timeLocal) {
kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;
console.info('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');
} else {
kc.timeSkew = -1;
}
if (kc.onTokenExpired) {
var start = useTokenTime ? kc.tokenParsed.iat : (new Date().getTime() / 1000);
var expiresIn = kc.tokenParsed.exp - start;
kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn * 1000);
if (kc.timeSkew == -1) {
kc.onTokenExpired();
} else {
var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;
if (expiresIn <= 0) {
kc.onTokenExpired();
} else {
kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);
}
}
}
} else {
@@ -686,14 +749,12 @@
function parseCallback(url) {
var oauth = new CallbackParser(url, kc.responseMode).parseUri();
var oauthState = callbackStorage.get(oauth.state);
var sessionState = sessionStorage.oauthState && JSON.parse(sessionStorage.oauthState);
if (sessionState && (oauth.code || oauth.error || oauth.access_token || oauth.id_token) && oauth.state && oauth.state == sessionState.state) {
delete sessionStorage.oauthState;
oauth.redirectUri = sessionState.redirectUri;
oauth.storedNonce = sessionState.nonce;
if (oauthState && (oauth.code || oauth.error || oauth.access_token || oauth.id_token)) {
oauth.redirectUri = oauthState.redirectUri;
oauth.storedNonce = oauthState.nonce;
oauth.prompt = oauthState.prompt;
if (oauth.fragment) {
oauth.newUrl += '#' + oauth.fragment;
@@ -771,7 +832,7 @@
setTimeout(check, loginIframe.interval * 1000);
}
var src = getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html?client_id=' + encodeURIComponent(kc.clientId) + '&origin=' + getOrigin();
var src = getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';
iframe.setAttribute('src', src );
iframe.style.display = 'none';
document.body.appendChild(iframe);
@@ -780,17 +841,22 @@
if (event.origin !== loginIframe.iframeOrigin) {
return;
}
var data = JSON.parse(event.data);
var promise = loginIframe.callbackMap[data.callbackId];
delete loginIframe.callbackMap[data.callbackId];
if ((!kc.sessionId || kc.sessionId == data.session) && data.loggedIn) {
promise.setSuccess();
} else {
if (event.data != "unchanged") {
kc.clearToken();
promise.setError();
}
for (var i = loginIframe.callbackList.length - 1; i >= 0; --i) {
var promise = loginIframe.callbackList[i];
if (event.data == "unchanged") {
promise.setSuccess();
} else {
promise.setError();
}
loginIframe.callbackList.splice(i, 1);
}
};
window.addEventListener('message', messageCallback, false);
var check = function() {
@@ -806,12 +872,13 @@
function checkLoginIframe() {
var promise = createPromise();
if (loginIframe.iframe && loginIframe.iframeOrigin) {
var msg = {};
msg.callbackId = createCallbackId();
loginIframe.callbackMap[msg.callbackId] = promise;
if (loginIframe.iframe && loginIframe.iframeOrigin ) {
var msg = kc.clientId + ' ' + kc.sessionId;
loginIframe.callbackList.push(promise);
var origin = loginIframe.iframeOrigin;
loginIframe.iframe.contentWindow.postMessage(JSON.stringify(msg), origin);
if (loginIframe.callbackList.length == 1) {
loginIframe.iframe.contentWindow.postMessage(msg, origin);
}
} else {
promise.setSuccess();
}
@@ -970,6 +1037,124 @@
throw 'invalid adapter type: ' + type;
}
var LocalStorage = function() {
if (!(this instanceof LocalStorage)) {
return new LocalStorage();
}
localStorage.setItem('kc-test', 'test');
localStorage.removeItem('kc-test');
var cs = this;
function clearExpired() {
var time = new Date().getTime();
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
if (key && key.indexOf('kc-callback-') == 0) {
var value = localStorage.getItem(key);
if (value) {
try {
var expires = JSON.parse(value).expires;
if (!expires || expires < time) {
localStorage.removeItem(key);
}
} catch (err) {
localStorage.removeItem(key);
}
}
}
}
}
cs.get = function(state) {
if (!state) {
return;
}
var key = 'kc-callback-' + state;
var value = localStorage.getItem(key);
if (value) {
localStorage.removeItem(key);
value = JSON.parse(value);
}
clearExpired();
return value;
};
cs.add = function(state) {
clearExpired();
var key = 'kc-callback-' + state.state;
state.expires = new Date().getTime() + (60 * 60 * 1000);
localStorage.setItem(key, JSON.stringify(state));
};
};
var CookieStorage = function() {
if (!(this instanceof CookieStorage)) {
return new CookieStorage();
}
var cs = this;
cs.get = function(state) {
if (!state) {
return;
}
var value = getCookie('kc-callback-' + state);
setCookie('kc-callback-' + state, '', cookieExpiration(-100));
if (value) {
return JSON.parse(value);
}
};
cs.add = function(state) {
setCookie('kc-callback-' + state.state, JSON.stringify(state), cookieExpiration(60));
};
cs.removeItem = function(key) {
setCookie(key, '', cookieExpiration(-100));
};
var cookieExpiration = function (minutes) {
var exp = new Date();
exp.setTime(exp.getTime() + (minutes*60*1000));
return exp;
};
var getCookie = function (key) {
var name = key + '=';
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return '';
};
var setCookie = function (key, value, expirationDate) {
var cookie = key + '=' + value + '; '
+ 'expires=' + expirationDate.toUTCString() + '; ';
document.cookie = cookie;
}
};
function createCallbackStorage() {
try {
return new LocalStorage();
} catch (err) {
}
return new CookieStorage();
}
var CallbackParser = function(uriToParse, responseMode) {
if (!(this instanceof CallbackParser)) {
@@ -1015,7 +1200,7 @@
}
var handleQueryParam = function(paramName, paramValue, oauth) {
var supportedOAuthParams = [ 'code', 'error', 'state' ];
var supportedOAuthParams = [ 'code', 'state', 'error', 'error_description' ];
for (var i = 0 ; i< supportedOAuthParams.length ; i++) {
if (paramName === supportedOAuthParams[i]) {
@@ -1041,9 +1226,6 @@
case 'redirect_fragment':
oauth.fragment = queryParams[param];
break;
case 'prompt':
oauth.prompt = queryParams[param];
break;
default:
if (responseMode != 'query' || !handleQueryParam(param, queryParams[param], oauth)) {
oauth.newUrl += (oauth.newUrl.indexOf('?') == -1 ? '?' : '&') + param + '=' + queryParams[param];
@@ -15,10 +15,58 @@
~ limitations under the License.
-->
<html>
<body>
<script>
function getCookie(cname)
var init;
function checkState(clientId, origin, sessionState, callback) {
var cookie = getCookie();
if (!cookie) {
callback('changed');
} else if (!init) {
var req = new XMLHttpRequest();
var url = location.href + "/init";
url += "?client_id=" + encodeURIComponent(clientId);
url += "&origin=" + encodeURIComponent(origin);
req.open('GET', url, true);
req.onreadystatechange = function () {
if (req.readyState == 4) {
if (req.status == 204) {
init = {
clientId: clientId,
origin: origin
}
callback('unchanged');
} else if (req.status = 404) {
callback('changed');
} else {
callback('error');
}
}
};
req.send();
} else {
if (clientId == init.clientId && origin == init.origin) {
if (sessionState == cookie) {
callback('unchanged');
} else {
callback('changed');
}
} else {
callback('error');
}
}
}
function getCookie()
{
var name = cname + "=";
var name = 'KEYCLOAK_SESSION=';
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++)
{
@@ -27,23 +75,24 @@
}
return null;
}
function receiveMessage(event)
{
if (event.origin !== "ORIGIN") {
console.log(event.origin + " does not match built origin");
return;
}
var data = JSON.parse(event.data);
data.loggedIn = false;
var cookie = getCookie('KEYCLOAK_SESSION');
if (cookie) {
data.loggedIn = true;
data.session = cookie;
var origin = event.origin;
var data = event.data.split(' ');
if (data.length != 2) {
event.source.postMessage('error', origin);
}
event.source.postMessage(JSON.stringify(data),
event.origin);
var clientId = data[0];
var sessionState = data[1];
checkState(clientId, event.origin, sessionState, function(result) {
event.source.postMessage(result, origin);
});
}
window.addEventListener("message", receiveMessage, false);
</script>
</script>
</body>
</html>
+30 -2
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -36,15 +36,32 @@
org.keycloak.adapters.osgi.*
</keycloak.osgi.export>
<keycloak.osgi.import>
org.ops4j.pax.web.*;version="[3.0,4)",
org.ops4j.pax.web.*;version="[3.0,5)",
javax.servlet.*;version="[2.5,4)";resolution:=optional,
org.eclipse.jetty.*;version="[8.1,10)";resolution:=optional,
org.keycloak.*;version="${project.version}",
org.apache.cxf.transport.http;resolution:=optional;version="[3,4)",
org.apache.cxf.transport.servlet;resolution:=optional;version="[3,4)",
*;resolution:=optional
</keycloak.osgi.import>
</properties>
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-spi</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
@@ -65,12 +82,23 @@
<artifactId>pax-web-runtime</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.ops4j.pax.web</groupId>
<artifactId>pax-web-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-security</artifactId>
<version>${jetty9.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
@@ -0,0 +1,71 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapters.osgi;
import org.keycloak.adapters.KeycloakConfigResolver;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.adapters.OIDCHttpFacade;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class PathBasedKeycloakConfigResolver implements KeycloakConfigResolver {
private final Map<String, KeycloakDeployment> cache = new ConcurrentHashMap<String, KeycloakDeployment>();
@Override
public KeycloakDeployment resolve(OIDCHttpFacade.Request request) {
String path = request.getURI();
String[] urlTokens = path.split("/");
if (urlTokens.length < 4) {
throw new IllegalStateException("Not able to determine the web-context to load the correspondent keycloak.json file");
}
String webContext = urlTokens[3];
KeycloakDeployment deployment = cache.get(webContext);
if (null == deployment) {
// not found on the simple cache, try to load it from the file system
String keycloakConfig = (String) System.getProperties().get("keycloak.config");
if(keycloakConfig == null || "".equals(keycloakConfig.trim())){
String karafEtc = (String) System.getProperties().get("karaf.etc");
if(karafEtc == null || "".equals(karafEtc.trim())){
throw new IllegalStateException("Neither \"keycloak.config\" nor \"karaf.etc\" java properties are set. Please set one of them.");
}
keycloakConfig = karafEtc;
}
String absolutePath = keycloakConfig + File.separator + webContext + "-keycloak.json";
InputStream is = null;
try {
is = new FileInputStream(absolutePath);
} catch (FileNotFoundException e){
throw new IllegalStateException("Not able to find the file " + absolutePath);
}
deployment = KeycloakDeploymentBuilder.build(is);
cache.put(webContext, deployment);
}
return deployment;
}
}
@@ -17,11 +17,6 @@
package org.keycloak.adapters.osgi;
import java.net.URL;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.List;
import org.eclipse.jetty.security.ConstraintMapping;
import org.eclipse.jetty.util.security.Constraint;
import org.jboss.logging.Logger;
@@ -32,6 +27,11 @@ import org.osgi.service.http.HttpContext;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
import java.net.URL;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.List;
/**
* Integration with pax-web, which allows to inject custom jetty-web.xml configuration from current bundle classpath into {@link WebContainer}
* and allows to inject custom security constraint for securing resources by Keycloak.
@@ -17,20 +17,26 @@
package org.keycloak.adapters.osgi;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.List;
import javax.servlet.Servlet;
import org.apache.cxf.transport.http.DestinationRegistry;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet;
import org.jboss.logging.Logger;
import org.ops4j.pax.web.service.WebContainer;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.http.HttpContext;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
import javax.servlet.Servlet;
import java.util.Arrays;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
import java.util.Properties;
/**
* Service, which allows to remove previously registered servlets in karaf/fuse environment. It assumes that particular servlet was previously
* registered as service in OSGI container under {@link javax.servlet.Servlet} interface.
@@ -42,13 +48,15 @@ import org.osgi.util.tracker.ServiceTrackerCustomizer;
*/
public class ServletReregistrationService {
private static final String CXF_SERVLET_PREFIX = "org.apache.cxf.servlet.";
protected static final Logger log = Logger.getLogger(ServletReregistrationService.class);
private static final List<String> FILTERED_PROPERTIES = Arrays.asList("objectClass", "service.id");
private BundleContext bundleContext;
private ServiceReference servletReference;
private ServiceReference managedServiceReference;
private ServiceTracker webContainerTracker;
private String alias;
public BundleContext getBundleContext() {
return bundleContext;
@@ -58,24 +66,18 @@ public class ServletReregistrationService {
this.bundleContext = bundleContext;
}
public ServiceReference getServletReference() {
return servletReference;
}
public void setServletReference(ServiceReference servletReference) {
this.servletReference = servletReference;
}
protected ServiceTracker getWebContainerTracker() {
return webContainerTracker;
}
public void start() {
if (servletReference == null) {
throw new IllegalStateException("No servlet reference provided");
if ( managedServiceReference == null) {
return;
}
Dictionary properties = obtainProperties();
alias = (String)getProp(properties, CXF_SERVLET_PREFIX + "context", "/cxf");
if(alias == null){
alias = "/cxf";
}
final Servlet servlet = (Servlet) bundleContext.getService(servletReference);
WebContainer externalWebContainer = findExternalWebContainer();
if (externalWebContainer == null) {
return;
@@ -83,18 +85,19 @@ public class ServletReregistrationService {
// Unregister servlet from external container now
try {
externalWebContainer.unregisterServlet(servlet);
externalWebContainer.unregister(alias);
log.debug("Original servlet with alias " + getAlias() + " unregistered successfully from external web container.");
} catch (IllegalStateException e) {
log.warn("Can't unregister servlet due to: " + e.getMessage());
}
final Dictionary finalProperties = properties;
ServiceTrackerCustomizer trackerCustomizer = new ServiceTrackerCustomizer() {
@Override
public Object addingService(ServiceReference webContainerServiceReference) {
WebContainer ourWebContainer = (WebContainer) bundleContext.getService(webContainerServiceReference);
registerServlet(ourWebContainer, servlet);
registerServlet(ourWebContainer, finalProperties);
log.debugv("Servlet with alias " + getAlias() + " registered to secured web container");
return ourWebContainer;
}
@@ -122,28 +125,82 @@ public class ServletReregistrationService {
// Re-register servlet back to original context
WebContainer externalWebContainer = findExternalWebContainer();
Servlet servlet = (Servlet) bundleContext.getService(servletReference);
registerServlet(externalWebContainer, servlet);
registerServlet(externalWebContainer, obtainProperties());
log.debug("Servlet with alias " + getAlias() + " registered back to external web container");
}
private String getAlias() {
return (String) servletReference.getProperty("alias");
return alias;
}
protected void registerServlet(WebContainer webContainer, Servlet servlet) {
/**
* Code comes from org.apache.cxf.transport.http.osgi.ServletExporter#updated(java.util.Dictionary)
* @param webContainer
* @param properties
*/
protected void registerServlet(WebContainer webContainer, Dictionary properties) {
HttpContext httpContext = webContainer.createDefaultHttpContext();
ServiceReference destinationServiceServiceReference = bundleContext.getServiceReference("org.apache.cxf.transport.http.DestinationRegistry");
DestinationRegistry destinationRegistry = (DestinationRegistry) bundleContext.getService(destinationServiceServiceReference);
Servlet servlet = new CXFNonSpringServlet(destinationRegistry, false);
try {
if (properties == null) {
properties = new Properties();
}
Properties sprops = new Properties();
sprops.put("init-prefix",
getProp(properties, CXF_SERVLET_PREFIX + "init-prefix", ""));
sprops.put("servlet-name",
getProp(properties, CXF_SERVLET_PREFIX + "name", "cxf-osgi-transport-servlet"));
sprops.put("hide-service-list-page",
getProp(properties, CXF_SERVLET_PREFIX + "hide-service-list-page", "false"));
sprops.put("disable-address-updates",
getProp(properties, CXF_SERVLET_PREFIX + "disable-address-updates", "true"));
sprops.put("base-address",
getProp(properties, CXF_SERVLET_PREFIX + "base-address", ""));
sprops.put("service-list-path",
getProp(properties, CXF_SERVLET_PREFIX + "service-list-path", ""));
sprops.put("static-resources-list",
getProp(properties, CXF_SERVLET_PREFIX + "static-resources-list", ""));
sprops.put("redirects-list",
getProp(properties, CXF_SERVLET_PREFIX + "redirects-list", ""));
sprops.put("redirect-servlet-name",
getProp(properties, CXF_SERVLET_PREFIX + "redirect-servlet-name", ""));
sprops.put("redirect-servlet-path",
getProp(properties, CXF_SERVLET_PREFIX + "redirect-servlet-path", ""));
sprops.put("service-list-all-contexts",
getProp(properties, CXF_SERVLET_PREFIX + "service-list-all-contexts", ""));
sprops.put("service-list-page-authenticate",
getProp(properties, CXF_SERVLET_PREFIX + "service-list-page-authenticate", "false"));
sprops.put("service-list-page-authenticate-realm",
getProp(properties, CXF_SERVLET_PREFIX + "service-list-page-authenticate-realm", "karaf"));
sprops.put("use-x-forwarded-headers",
getProp(properties, CXF_SERVLET_PREFIX + "use-x-forwarded-headers", "false"));
// Accept extra properties by default, can be disabled if it is really needed
if (Boolean.valueOf(getProp(properties, CXF_SERVLET_PREFIX + "support.extra.properties", "true").toString())) {
Enumeration keys = properties.keys();
while (keys.hasMoreElements()) {
String nextKey = keys.nextElement().toString();
if (!nextKey.startsWith(CXF_SERVLET_PREFIX)) {
sprops.put(nextKey, properties.get(nextKey));
}
}
}
Hashtable<String, Object> servletInitParams = new Hashtable<String, Object>();
String[] propNames = servletReference.getPropertyKeys();
for (String propName : propNames) {
Enumeration keys = sprops.keys();
while(keys.hasMoreElements()){
String propName = (String) keys.nextElement();
if (!FILTERED_PROPERTIES.contains(propName)) {
servletInitParams.put(propName, servletReference.getProperty(propName));
servletInitParams.put(propName, sprops.getProperty(propName));
}
}
// Try to register servlet in given web container now
HttpContext httpContext = webContainer.createDefaultHttpContext();
String alias = (String) servletReference.getProperty("alias");
webContainer.registerServlet(alias, servlet, servletInitParams, httpContext);
} catch (Exception e) {
log.error("Can't register servlet in web container", e);
@@ -156,7 +213,7 @@ public class ServletReregistrationService {
* @return web container or null
*/
protected WebContainer findExternalWebContainer() {
BundleContext servletBundleContext = servletReference.getBundle().getBundleContext();
BundleContext servletBundleContext = managedServiceReference.getBundle().getBundleContext();
ServiceReference webContainerReference = servletBundleContext.getServiceReference(WebContainer.class.getName());
if (webContainerReference == null) {
log.warn("Not found webContainer reference for bundle " + servletBundleContext);
@@ -166,4 +223,32 @@ public class ServletReregistrationService {
}
}
private Dictionary obtainProperties(){
Dictionary properties = null;
ServiceReference reference = bundleContext.getServiceReference(ConfigurationAdmin.class.getName());
ConfigurationAdmin admin = (ConfigurationAdmin) bundleContext.getService(reference);
try {
Configuration configuration = admin.getConfiguration("org.apache.cxf.osgi");
properties = configuration.getProperties();
} catch (Exception e){
log.warn("Unable to obtain cxf osgi configadmin reference.", e);
}
return properties;
}
private Object getProp(Dictionary properties, String key, Object defaultValue) {
Object value = null;
if(properties != null){
value = properties.get(key);
}
return value == null ? defaultValue : value;
}
public ServiceReference getManagedServiceReference() {
return managedServiceReference;
}
public void setManagedServiceReference(ServiceReference managedServiceReference) {
this.managedServiceReference = managedServiceReference;
}
}
+1 -1
View File
@@ -20,7 +20,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<name>Keycloak OIDC Client Adapter Modules</name>
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -18,15 +18,15 @@
package org.keycloak.adapters.servlet;
import org.keycloak.adapters.AdapterDeploymentContext;
import org.keycloak.adapters.spi.AuthChallenge;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.AuthenticatedActionsHandler;
import org.keycloak.adapters.spi.InMemorySessionIdMapper;
import org.keycloak.adapters.KeycloakConfigResolver;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.adapters.NodesRegistrationManagement;
import org.keycloak.adapters.PreAuthActionsHandler;
import org.keycloak.adapters.spi.AuthChallenge;
import org.keycloak.adapters.spi.AuthOutcome;
import org.keycloak.adapters.spi.InMemorySessionIdMapper;
import org.keycloak.adapters.spi.SessionIdMapper;
import org.keycloak.adapters.spi.UserSessionManagement;
@@ -39,7 +39,6 @@ import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -47,6 +46,7 @@ import java.io.InputStream;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Pattern;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
@@ -56,10 +56,18 @@ public class KeycloakOIDCFilter implements Filter {
protected AdapterDeploymentContext deploymentContext;
protected SessionIdMapper idMapper = new InMemorySessionIdMapper();
protected NodesRegistrationManagement nodesRegistrationManagement;
protected Pattern skipPattern;
private final static Logger log = Logger.getLogger(""+KeycloakOIDCFilter.class);
@Override
public void init(final FilterConfig filterConfig) throws ServletException {
String skipPatternDefinition = filterConfig.getInitParameter("keycloak.config.skipPattern");
if (skipPatternDefinition != null) {
skipPattern = Pattern.compile(skipPatternDefinition, Pattern.DOTALL);
}
String configResolverClass = filterConfig.getInitParameter("keycloak.config.resolver");
if (configResolverClass != null) {
try {
@@ -85,13 +93,7 @@ public class KeycloakOIDCFilter implements Filter {
if (pathParam != null) path = pathParam;
is = filterConfig.getServletContext().getResourceAsStream(path);
}
KeycloakDeployment kd;
if (is == null) {
log.fine("No adapter configuration. Keycloak is unconfigured and will deny all requests.");
kd = new KeycloakDeployment();
} else {
kd = KeycloakDeploymentBuilder.build(is);
}
KeycloakDeployment kd = createKeycloakDeploymentFrom(is);
deploymentContext = new AdapterDeploymentContext(kd);
log.fine("Keycloak is using a per-deployment configuration.");
}
@@ -99,13 +101,30 @@ public class KeycloakOIDCFilter implements Filter {
nodesRegistrationManagement = new NodesRegistrationManagement();
}
private KeycloakDeployment createKeycloakDeploymentFrom(InputStream is) {
if (is == null) {
log.fine("No adapter configuration. Keycloak is unconfigured and will deny all requests.");
return new KeycloakDeployment();
}
return KeycloakDeploymentBuilder.build(is);
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
log.fine("Keycloak OIDC Filter");
//System.err.println("Keycloak OIDC Filter: " + ((HttpServletRequest)req).getRequestURL().toString());
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
if (shouldSkip(request)) {
chain.doFilter(req, res);
return;
}
OIDCServletHttpFacade facade = new OIDCServletHttpFacade(request, response);
KeycloakDeployment deployment = deploymentContext.resolveDeployment(facade);
if (deployment == null || !deployment.isConfigured()) {
@@ -171,6 +190,26 @@ public class KeycloakOIDCFilter implements Filter {
}
/**
* Decides whether this {@link Filter} should skip the given {@link HttpServletRequest} based on the configured {@link KeycloakOIDCFilter#skipPattern}.
* Patterns are matched against the {@link HttpServletRequest#getRequestURI() requestURI} of a request without the context-path.
* A request for {@code /myapp/index.html} would be tested with {@code /index.html} against the skip pattern.
* Skipped requests will not be processed further by {@link KeycloakOIDCFilter} and immediately delegated to the {@link FilterChain}.
*
* @param request the request to check
* @return {@code true} if the request should not be handled,
* {@code false} otherwise.
*/
private boolean shouldSkip(HttpServletRequest request) {
if (skipPattern == null) {
return false;
}
String requestPath = request.getRequestURI().substring(request.getContextPath().length());
return skipPattern.matcher(requestPath).matches();
}
@Override
public void destroy() {
@@ -19,12 +19,12 @@ package org.keycloak.adapters.servlet;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.adapters.AdapterTokenStore;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.adapters.spi.KeycloakAccount;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.OidcKeycloakAccount;
import org.keycloak.adapters.RefreshableKeycloakSecurityContext;
import org.keycloak.adapters.RequestAuthenticator;
import org.keycloak.adapters.spi.HttpFacade;
import org.keycloak.adapters.spi.KeycloakAccount;
import org.keycloak.adapters.spi.SessionIdMapper;
import javax.servlet.http.HttpServletRequest;
@@ -51,10 +51,16 @@ public class OIDCFilterSessionStore extends FilterSessionStore implements Adapte
}
public HttpServletRequestWrapper buildWrapper() {
HttpSession session = request.getSession();
KeycloakAccount account = (KeycloakAccount)session.getAttribute(KeycloakAccount.class.getName());
HttpSession session = request.getSession(false);
KeycloakAccount account = null;
if (session != null) {
account = (KeycloakAccount) session.getAttribute(KeycloakAccount.class.getName());
if (account == null) {
account = (KeycloakAccount) request.getAttribute(KeycloakAccount.class.getName());
}
}
if (account == null) {
account = (KeycloakAccount)request.getAttribute(KeycloakAccount.class.getName());
account = (KeycloakAccount) request.getAttribute(KeycloakAccount.class.getName());
}
return buildWrapper(session, account);
}
@@ -89,6 +95,7 @@ public class OIDCFilterSessionStore extends FilterSessionStore implements Adapte
protected void cleanSession(HttpSession session) {
session.removeAttribute(KeycloakAccount.class.getName());
session.removeAttribute(KeycloakSecurityContext.class.getName());
clearSavedRequest(session);
}
@@ -160,6 +167,7 @@ public class OIDCFilterSessionStore extends FilterSessionStore implements Adapte
SerializableKeycloakAccount sAccount = new SerializableKeycloakAccount(roles, account.getPrincipal(), securityContext);
HttpSession httpSession = request.getSession();
httpSession.setAttribute(KeycloakAccount.class.getName(), sAccount);
httpSession.setAttribute(KeycloakSecurityContext.class.getName(), sAccount.getKeycloakSecurityContext());
if (idMapper != null) idMapper.map(account.getKeycloakSecurityContext().getToken().getClientSession(), account.getPrincipal().getName(), httpSession.getId());
//String username = securityContext.getToken().getSubject();
//log.fine("userSessionManagement.login: " + username);
+1 -1
View File
@@ -21,7 +21,7 @@
<parent>
<artifactId>keycloak-parent</artifactId>
<groupId>org.keycloak</groupId>
<version>1.9.0.Final</version>
<version>2.4.0.CR1</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -17,12 +17,12 @@
package org.keycloak.servlet;
import java.util.Map;
import org.keycloak.AbstractOAuthClient;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.common.enums.RelativeUrlsUsed;
import java.util.Map;
/**
* @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a>
*/
@@ -25,11 +25,12 @@ import org.keycloak.adapters.OIDCHttpFacade;
import org.keycloak.adapters.ServerRequest;
import org.keycloak.adapters.spi.AuthenticationError;
import org.keycloak.adapters.spi.LogoutError;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.jose.jws.JWSInput;
import org.keycloak.jose.jws.JWSInputException;
import org.keycloak.representations.AccessTokenResponse;
import org.keycloak.representations.IDToken;
import org.keycloak.common.util.KeycloakUriBuilder;
import org.keycloak.util.TokenUtil;
import javax.security.cert.X509Certificate;
import javax.servlet.http.Cookie;
@@ -91,15 +92,15 @@ public class ServletOAuthClient extends KeycloakDeploymentDelegateOAuthClient {
String state = getStateCode();
KeycloakDeployment resolvedDeployment = resolveDeployment(getDeployment(), request);
String authUrl = resolvedDeployment.getAuthUrl().clone().build().toString();
String scopeParam = TokenUtil.attachOIDCScope(scope);
KeycloakUriBuilder uriBuilder = KeycloakUriBuilder.fromUri(authUrl)
.queryParam(OAuth2Constants.RESPONSE_TYPE, OAuth2Constants.CODE)
.queryParam(OAuth2Constants.CLIENT_ID, getClientId())
.queryParam(OAuth2Constants.REDIRECT_URI, redirectUri)
.queryParam(OAuth2Constants.STATE, state);
if (scope != null) {
uriBuilder.queryParam(OAuth2Constants.SCOPE, scope);
}
.queryParam(OAuth2Constants.STATE, state)
.queryParam(OAuth2Constants.SCOPE, scopeParam);
URI url = uriBuilder.build();
String stateCookiePath = this.stateCookiePath;
@@ -20,6 +20,7 @@ package org.keycloak.servlet;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.representations.adapters.config.AdapterConfig;
import java.io.InputStream;
/**
Loaded 100 of 4689 files, more files were not shown because too many files have changed in this diff. Show more