// LDAP config
grails.plugins.springsecurity.ldap.context.managerDn = 'domain\\ldapbind'
grails.plugins.springsecurity.ldap.context.managerPassword = 'password'
grails.plugins.springsecurity.ldap.context.server = 'ldap://domain:389/'
grails.plugins.springsecurity.ldap.authorities.ignorePartialResultException = true
grails.plugins.springsecurity.ldap.search.base = 'dc=domain'
grails.plugins.springsecurity.ldap.search.filter="sAMAccountName={0}"
grails.plugins.springsecurity.ldap.search.searchSubtree = true
grails.plugins.springsecurity.ldap.auth.hideUserNotFoundExceptions = false
grails.plugins.springsecurity.ldap.search.attributesToReturn = ['mail', 'displayName', 'title']
grails.plugins.springsecurity.providerNames = ['rememberMeAuthenticationProvider', 'daoAuthenticationProvider', 'ldapAuthProvider', 'anonymousAuthenticationProvider']
grails.plugins.springsecurity.ldap.useRememberMe = false
grails.plugins.springsecurity.ldap.authorities.retrieveGroupRoles = true
grails.plugins.springsecurity.ldap.authorities.retrieveDatabaseRoles = true
grails.plugins.springsecurity.ldap.authorities.groupSearchBase ='dc=domain'
grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = 'member={0}'
//grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = '(member:1.2.840.113556.1.4.1941:={0})'
grails.plugins.springsecurity.rememberMe.persistent = true
grails.plugins.springsecurity.rememberMe.persistentToken.domainClassName = 'security.PersistentLogin'
grails.plugins.springsecurity.ldap.rememberMe.detailsManager.groupMemberAttributeName = 'member'
grails.plugins.springsecurity.ldap.rememberMe.detailsManager.groupSearchBase = 'dc=domain'
grails.plugins.springsecurity.ldap.rememberMe.usernameMapper.userDnBase = 'domain'
grails.plugins.springsecurity.ldap.rememberMe.usernameMapper.usernameAttribute = 'cn'
grails.plugins.springsecurity.ldap.rememberMe.detailsManager.attributesToRetrieve = null
//grails.plugins.springsecurity.ldap.context.baseEnvironmentProperties = [ 'java.naming.ldap.factory.socket' : //'org.springframework.ldap.extras.ad.access.TolerantSSLSocketFactory' ]
grails.plugins.springsecurity.ldap.authorities.clean.uppercase = true
grails.plugins.springsecurity.cacheUsers = true
grails.plugins.springsecurity.apf.continueChainBeforeSuccessfulAuthentication = false
grails.plugins.springsecurity.apf.allowSessionCreation = false
grails.plugins.springsecurity.useSessionFixationPrevention = true
grails.plugins.springsecurity.rememberMe.alwaysRemember = true
grails.plugins.springsecurity.rememberMe.persistent = true
grails.plugins.springsecurity.securityConfigType = "InterceptUrlMap"
grails.plugins.springsecurity.interceptUrlMap = [
'/user/**': ['ROLE_ADMIN'],
'/role/**': ['ROLE_ADMIN'],
'/registrationcode/**': ['ROLE_ADMIN'],
'/acl*/**': ['ROLE_ADMIN'],
'/securityinfo/usercache': ['ROLE_NO_ACCESS'],
'/security*/**': ['ROLE_ADMIN'],
'/processing*/**': ['ROLE_ADMIN'],
'/js/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
'/css/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
'/images/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
'/login/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
'/logout/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
'/*/**': ['IS_AUTHENTICATED_REMEMBERED']
]
Pokazywanie postów oznaczonych etykietą Grails. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Grails. Pokaż wszystkie posty
piątek, września 13, 2013
środa, czerwca 12, 2013
How to fix checkboxes in Grails Spring Security Management Console
Edit springSecurityUI.gsp, before the end of body add script block:
function fixInputs() {
var container = document.getElementById("tab-roles");
var inputs = container.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
inputs[i].removeAttribute('style');
}
var imgs = container.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) {
imgs[i].setAttribute('style', 'display: none');
}
}
window.setTimeout(fixInputs, 500);
piątek, czerwca 07, 2013
Skypt do niezależnego budowania war-a Grails
@echo off
::SET SCRIPT_NAME=%~n0
::SET TARGET_ENV=%SCRIPT_NAME:make_=%
SET TARGET_ENV=prod0
SET CANON_ENV=%TARGET_ENV:0=%
SET CANON_ENV=%CANON_ENV:1=%
SET CANON_ENV=%CANON_ENV:2=%
echo *** Downloading Grails framework
echo ***
wget -c http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.2.2.zip >NUL
echo *** Unzipping Grails distro
echo ***
unzip -n grails-2.2.2.zip >NUL
SET PREV_HOME=%GRAILS_HOME%
SET PREV_PATH=%GRAILS_HOME%\bin
SET GRAILS_HOME=%~dp0
SET GRAILS_HOME=%GRAILS_HOME%grails-2.2.2
CALL SET CLEANED_PATH=%%PATH:%PREV_PATH%=%%
set PATH="%GRAILS_HOME%\bin";%CLEANED_PATH%
SET PREV_HOME=
SET PREV_PATH=
SET CLEANED_PATH=
echo *** I will make WAR file for %TARGET_ENV% (%CANON_ENV%) using %GRAILS_HOME%
echo ***
copy grails-app\conf\Config.groovy.%TARGET_ENV% grails-app\conf\Config.groovy
start /b /wait grails %CANON_ENV% war
pause
::SET SCRIPT_NAME=%~n0
::SET TARGET_ENV=%SCRIPT_NAME:make_=%
SET TARGET_ENV=prod0
SET CANON_ENV=%TARGET_ENV:0=%
SET CANON_ENV=%CANON_ENV:1=%
SET CANON_ENV=%CANON_ENV:2=%
echo *** Downloading Grails framework
echo ***
wget -c http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.2.2.zip >NUL
echo *** Unzipping Grails distro
echo ***
unzip -n grails-2.2.2.zip >NUL
SET PREV_HOME=%GRAILS_HOME%
SET PREV_PATH=%GRAILS_HOME%\bin
SET GRAILS_HOME=%~dp0
SET GRAILS_HOME=%GRAILS_HOME%grails-2.2.2
CALL SET CLEANED_PATH=%%PATH:%PREV_PATH%=%%
set PATH="%GRAILS_HOME%\bin";%CLEANED_PATH%
SET PREV_HOME=
SET PREV_PATH=
SET CLEANED_PATH=
echo *** I will make WAR file for %TARGET_ENV% (%CANON_ENV%) using %GRAILS_HOME%
echo ***
copy grails-app\conf\Config.groovy.%TARGET_ENV% grails-app\conf\Config.groovy
start /b /wait grails %CANON_ENV% war
pause
piątek, marca 01, 2013
Grails Spring Security LDAP AD
// Added by the Spring Security Core plugin:
grails.plugins.springsecurity.userLookup.userDomainClassName = 'security.AuthUser'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'security.AuthUserAuthRole'
grails.plugins.springsecurity.authority.className = 'security.AuthRole'
// LDAP config
grails.plugins.springsecurity.ldap.context.managerDn = 'domain\\user'
grails.plugins.springsecurity.ldap.context.managerPassword = 'passw0rd'
grails.plugins.springsecurity.ldap.context.server = 'ldap://dc:389/'
grails.plugins.springsecurity.ldap.authorities.ignorePartialResultException = true
grails.plugins.springsecurity.ldap.search.base = 'dc=domain,dc=internal'
grails.plugins.springsecurity.ldap.search.filter="sAMAccountName={0}"
grails.plugins.springsecurity.ldap.search.searchSubtree = true
grails.plugins.springsecurity.ldap.auth.hideUserNotFoundExceptions = false
grails.plugins.springsecurity.ldap.search.attributesToReturn = ['mail', 'displayName', 'title']
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider', 'daoAuthenticationProvider', 'anonymousAuthenticationProvider', 'rememberMeAuthenticationProvider']
grails.plugins.springsecurity.ldap.useRememberMe = false
grails.plugins.springsecurity.ldap.authorities.retrieveGroupRoles = true
grails.plugins.springsecurity.ldap.authorities.retrieveDatabaseRoles = true
grails.plugins.springsecurity.ldap.authorities.groupSearchBase ='dc=domain,dc=internal'
grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = 'member={0}'
grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = '(member:1.2.840.113556.1.4.1941:={0})'
//grails.plugins.springsecurity.ldap.context.baseEnvironmentProperties
grails.plugins.springsecurity.ldap.authorities.clean.uppercase = true
Akcje na kontrolerach można zabezpieczyć za pomocą adnotacji grails.plugins.springsecurity.Secured np.
@Secured(['ROLE_ITSM_ADMINS','ROLE_ADMIN'])
def list() {
Log.find(params)
}
gdzie "ITSM Admins" to nazwa grupy w Active Directory.
public static String describeLogin() {
if (springSecurityService.principal instanceof String)
return "Authorization: "+springSecurityService.principal
def user = AuthUser.findByUsername(springSecurityService.principal.username)
if (user)
return "Logged in as: "+user.username
return "Not logged in"
}
grails.plugins.springsecurity.userLookup.userDomainClassName = 'security.AuthUser'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'security.AuthUserAuthRole'
grails.plugins.springsecurity.authority.className = 'security.AuthRole'
// LDAP config
grails.plugins.springsecurity.ldap.context.managerDn = 'domain\\user'
grails.plugins.springsecurity.ldap.context.managerPassword = 'passw0rd'
grails.plugins.springsecurity.ldap.context.server = 'ldap://dc:389/'
grails.plugins.springsecurity.ldap.authorities.ignorePartialResultException = true
grails.plugins.springsecurity.ldap.search.base = 'dc=domain,dc=internal'
grails.plugins.springsecurity.ldap.search.filter="sAMAccountName={0}"
grails.plugins.springsecurity.ldap.search.searchSubtree = true
grails.plugins.springsecurity.ldap.auth.hideUserNotFoundExceptions = false
grails.plugins.springsecurity.ldap.search.attributesToReturn = ['mail', 'displayName', 'title']
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider', 'daoAuthenticationProvider', 'anonymousAuthenticationProvider', 'rememberMeAuthenticationProvider']
grails.plugins.springsecurity.ldap.useRememberMe = false
grails.plugins.springsecurity.ldap.authorities.retrieveGroupRoles = true
grails.plugins.springsecurity.ldap.authorities.retrieveDatabaseRoles = true
grails.plugins.springsecurity.ldap.authorities.groupSearchBase ='dc=domain,dc=internal'
grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = 'member={0}'
grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = '(member:1.2.840.113556.1.4.1941:={0})'
//grails.plugins.springsecurity.ldap.context.baseEnvironmentProperties
grails.plugins.springsecurity.ldap.authorities.clean.uppercase = true
Akcje na kontrolerach można zabezpieczyć za pomocą adnotacji grails.plugins.springsecurity.Secured np.
@Secured(['ROLE_ITSM_ADMINS','ROLE_ADMIN'])
def list() {
Log.find(params)
}
gdzie "ITSM Admins" to nazwa grupy w Active Directory.
public static String describeLogin() {
if (springSecurityService.principal instanceof String)
return "Authorization: "+springSecurityService.principal
def user = AuthUser.findByUsername(springSecurityService.principal.username)
if (user)
return "Logged in as: "+user.username
return "Not logged in"
}
środa, stycznia 16, 2013
Grails table with inputs workaround
Domyślnie body ma wypełniać 100% szerokości, ale overflow jest ustawiony na auto co powoduje, że po wstawieniu kontrolek input tabelka zaczyna wyjeżdżać poza zdefiniowany zakres body. Obejście: skalowanie kontrolek input do rozmiaru kontenera i wyłączenie wspomnianych dwóch atrybutów body. Grailsy najlepiej wyglądają w Google Chrome i Apple Safari.
poniedziałek, stycznia 14, 2013
Grails GSP params
piątek, stycznia 01, 2010
Z Grails-ów też można zrobić ESB
Uproszczona definicja ESB:
- można podłączyć się do wszystkiego za pomocą wtyczek (grails install-plugin)
- tą samą usługę możemy wystawić po wielu transportach (WebService: static expose=['cxf'])
- usługi wewnętrznie wołane są po natywnym protokole szyny (Service.metoda)
- mamy routing komunikatów (grails install-plugin camel).
Grailsy dodatkowo mają ładny webowy interfejs użytkownika i są tanie (OpenSource + Tomcat + Apache mod_proxy).
A co z szybkością? grails run-app: 29ms, grails prod run-app 25ms.
Na BEA JRockit(R) (build R27.6.5-32_o-121899-1.6.0_14-20091001-2107-windows-ia32, compiled mode) udaje się zejść do 16.5ms pod warunkiem jednej poprawki (Grailsy próbują używać metody, która nie została jeszcze skompilowana do kodu maszynowego - błąd w JVM):
Klasa org.codehaus.groovy.grails.cli.GrailsScriptRunner z grails-bootstrap-1.2.0.jar, metoda private int callPluginOrGrailsScript(String scriptName), workaround:
Project p = antBuilder.getAntProject();Przypominam, że właścicielem Grails-ów jest VMware.
try {
p.setDefaultInputStream(System.in);
}
catch (NoSuchMethodError e) {
try {
Field f = p.getClass().getDeclaredField("defaultInputStream");
f.setAccessible(true);
f.set(p, System.in);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
Update 03.03.2010: mamy naprawione Grailsy na JRockit-cie. Niestety Oracle zamierza skasować JRockita jako produkt i przenieść GC firmy BEA do SUN JVM.
środa, kwietnia 23, 2008
wtorek, kwietnia 22, 2008
Subskrybuj:
Posty (Atom)




