wildfly in oracle okolje - · pdf filewildfly in oracle okolje integracija aplikacij z...

27
WildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik <[email protected]> Soſtware Architect @ Abakus Plus d.o.o.

Upload: haque

Post on 06-Mar-2018

233 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

WildFly in Oracle okoljeIntegracija aplikacij z obstoječo infrastrukturo

Predavatelj:

Urh Srečnik <[email protected]>

Software Architect @ Abakus Plus d.o.o.

Page 2: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Abakus Plus d.o.o.

● Applications● Special

– DB – Newspaper Distribution, – FIS – Flight Information

System– DMS – Document Management

System● ARBITER – the ultimate tool

in audit trailing● APPM – Abakus Plus

Performance and Monitoring Tool

● Backup Server

● Services● DBA, OS administration,

programming (MediaWiki, Oracle)

● networks (services, VPN, QoS, security)

● open source, monitoring (Nagios, OCS, Wiki)

● Hardware● servers, backup server, SAN

storage, firewalls

Page 3: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml
Page 4: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

DBA_USERS in aplikativni uporabniki

Aplikativni strežnik

Podatkovni strežnik

Uporabniki

user=”MYAPP”Oracle Schema

user=”John Doe”javax.security.Principal

Page 5: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Container Managed Authentication

WildFly

App 1 App 2

Oracle Database

DBA_USERS

JAAS

Security Domain

Login Module

users

login

Page 6: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

WildFly Login Module Implementation

<<abstract>>AbstractServerLoginModule

+ initialize()+ login()# getIdentity()# getRoleSets()

javax.security.auth.spi.LoginModule

DemoLoginModule

Maven Coordinates:org.picketbox:picketbox

Page 7: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

WildFly Module Deployment

$WILDFLY_HOME/  `­ modules/     `­ system/        `­ layers/           `­ base/              `­ mycompany/                 `­ mymodule/                   `­ main/

mymodule.jar

mymodule.xml

$ ./jboss­cli.sh ­­connect[standalone@localhost:9990 /] module add \> ­­name=mycompany.mymodule \> ­­resources=mymodule.jar \> ­­dependencies=org.picketbox

Page 8: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

WildFly Create Security Domain

./subsystem=security/security­domain=demo­security­domain:add(cache­type="default")

cd ./subsystem=security/security­domain=demo­security­domain

./authentication=classic:add(\

  login­modules=[ { \

    code="com.mypackage.MyDemoModule", \

    flag="required", \

    module­options={ \

      option="value" \

    } \

  }])

Page 9: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Login Logic

Login Credentials

Open JDBC Connection

Query DBA_ROLE_PRIVS

Close JDBC Connection success

failure

Not authenticated

Authenticated

Page 10: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Oracle Users and Roles (example)

create user app_schema  identified by app_schema  account lock;

create user app$proxy identified by app$proxy;

create user app$user_a identified by user_a;

create user app$user_b identified by user_b;

create user app$user_c identified by user_c;

create role apr$admin;

create role apr$user;

Page 11: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Oracle Proxy Users (grants)

grant create session to app$proxy;

grant create session to apr$user;

alter user app$user_a    grant connect through app$proxy;

alter user app$user_b    grant connect through app$proxy;

alter user app$user_c    grant connect through app$proxy;

Page 12: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Oracle Role Grants

grant apr$user to apr$admin;

grant apr$admin to app$user_a;

grant apr$user to app$user_b;

grant apr$user to app$user_c;

Page 13: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Oracle Setup Overview

APP$USER_A

APP$USER_B

APP$USER_C

APP$PROXY

APP_SCHEMA

$ sqlplus app$proxy[app$user_a]/app$proxySQL> alter session set current_schema=app_schema;

Page 14: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

JDBC Connection Listener Implementation

<<interface>>ConnectionListener

+ initialize()+ activated()+ passivated()

<<class>>DemoConnectionListener

Maven Coordinates:org.jboss.ironjacamar:ironjacamar­jdbc

Page 15: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

JDBC Connection Listener Deployment

data­source add \ ­­name=MyDemoDataSource \ ­­jndi­name=java:jboss/datasources/MyDemoDataSource \ ­­driver­name=oracle \ ­­connection­url= \   jdbc:oracle:thin:@//your.host.com/service \ ­­user­name=app\$proxy \ ­­password=my_proxy_pass \ ­­connection­listener­class=\   com.abakus.lib.oraproxy.OraProxyConnectionListener \ ­­connection­listener­property={\   "currentSchema"=>"MY_APP" \ }

Page 16: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

JDBC: Oracle Proxy Sessions

oracle.jdbc.OracleConnection conn;

conn.openProxySession()

conn.close(    OracleConnection.PROXY_SESSION);

Page 17: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Security Context

● Sure● @WebFilter● @AroundInvoke

● Uhm.. What about● @Asynchronous● @Timeout

● ...

● How to obtain javax.security.Principal in JDBC Connection Listener?!

● ThreadLocal<Principal>

Does that really work?

Page 18: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

What About “AUTHENTICATION REQUIRED” ?

● Wrap javax.security.Principal to include password.

Page 19: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml
Page 20: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Single Sign On

LDAPAUTH

LDAP Schema should contain:* Username* Per­database username

DB1 DB2

APP3 APP2APP1

Page 21: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

SAML? OAuth? CAS? OpenID? AD? …?

● SSO vs “WebSSO”

Page 22: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml
Page 23: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml
Page 24: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

PicketLink Overview

● PicketLink is an umbrella project for security and identity management for Java Applications.● Java EE Application Security● Identity Management● Federation (SAML, OAuth, OpenID, ...)● Social Login (Facebook, Twiter, Google)● Mobile Applications Security● REST Applications Security

● Quickstart examples! =)

Page 25: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Identity Provider

● Create security-domain● Create new web-app

● pom.xml - manifest deps: org.picketlink● web.xml

– Configure container managed authentication– IDPHttpSessionListener– IDPFilter

● picketlink.xml– SAML specific configuration

● idp url, trusted domains, ...

Page 26: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

Service Provider

● Create security-domain● SAML2LoginModule

● picketlink.xml● IDP URL, SP URL● Keystore parameters

Page 27: WildFly in Oracle okolje -   · PDF fileWildFly in Oracle okolje Integracija aplikacij z obstoječo infrastrukturo Predavatelj: Urh Srečnik  ... picketlink.xml

?