<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">Based on the other feedback and the Spring way of providing as many configuration options as possible, I think we should refactor AdapterDeploymentContextBean.</div><div class=""><br class=""></div><div class="">However, I rather like the way Spring that divides behavior up into an interface and multiple implementations. I think we should:</div><div class=""><br class=""></div><div class="">1. Refactor the current&nbsp;AdapterDeploymentContextBean to be an interface and maybe rename it AdapterDeploymentContextFactory.</div><div class="">2. Split the current implementation into:</div><div class="">&nbsp; &nbsp;a. &nbsp;ClasspathAdapterDeploymentContextFactory &gt; loads from class path</div><div class="">&nbsp; &nbsp;b. WebApplicationAdapterDeploymentContextFactory &gt; loads from WEB-INF</div><div class="">&nbsp; &nbsp;c. JndiAdapterDeploymentContextFactory &gt; load from JNDI</div><div class="">3. The above implementations should extend AbtractAdapterDeploymentContextFactory with something like:</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">protected loadKeycloakDeployment(Resource&nbsp;resource) {<br class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;return&nbsp;KeycloakDeploymentBuilder.build(resource.getInputStream());</div><div class="">}</div><div class=""><br class=""></div><div class="">That would allow anyone to provide a custom AdapterDeploymentContextFactory to load the keycloak.json from “anywhere."</div><div class=""><br class=""></div><div class="">What do you think? Since we’re refactoring, I’d also like to take into account design multi-tentant support. I think this approach is flexible enough to add that in the future.</div><div class=""><br class=""></div><div class="">If we agree this is a good approach you want to take a stab at it Thomas or should I?</div><div class=""><br class=""></div><div class="">Best,</div><div class="">Scott</div><div class=""><br class=""></div><br class=""><div class="">
<div class="">Scott Rossillo</div><div class="">Smartling | Senior Software Engineer</div><div class=""><a href="mailto:srossillo@smartling.com" class="">srossillo@smartling.com</a></div><div class=""><br class=""></div><div class=""><a href="https://app.sigstr.com/uc/55e5d41c6533390d03580000" id="campaignblock" target="_blank" style="box-sizing: border-box; color: rgb(0, 75, 118); outline-offset: -2px; font-family: gesta, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 20px; widows: 1; background-color: rgb(255, 255, 255); outline: 0px !important;" class=""><img alt="Latest News + Events" border="0" src="https://app.sigstr.com/uc/55e5d41c6533390d03580000/img" style="box-sizing: border-box; border: 0px; vertical-align: top; max-width: 100%; height: auto; width: inherit; color: blue; font-family: Helvetica; font-size: 12px;" class=""></a><span style="color: rgb(169, 169, 169); font-family: gesta, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 20px; widows: 1; background-color: rgb(255, 255, 255);" class=""></span><div id="watermark" style="box-sizing: border-box; color: rgb(169, 169, 169); font-family: gesta, Arial, Helvetica, sans-serif; font-size: 14px; line-height: 20px; widows: 1; background-color: rgb(255, 255, 255);" class=""><a href="http://www.sigstr.com/" style="box-sizing: border-box; color: rgb(0, 124, 194); text-decoration: none; background-color: transparent; outline: 0px !important;" class=""><img alt="Powered by Sigstr" border="0" src="https://app.sigstr.com/uc/55e5d41c6533390d03580000/watermark" style="box-sizing: border-box; border: 0px; vertical-align: top; max-width: 100%; height: auto; width: inherit; color: rgb(99, 99, 99); font-family: Helvetica; font-size: 11px;" class=""></a></div></div>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Sep 25, 2015, at 9:21 AM, Thomas Raehalme &lt;<a href="mailto:thomas.raehalme@aitiofinland.com" class="">thomas.raehalme@aitiofinland.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class="">Hi!<br class=""><br class=""></div>We have written a custom subclass of org.keycloak.adapters.springsecurity.AdapterDeploymentContextBean to enable custom location for keycloak.json. The use of custom location is optional and defaults to the standard /WEB-INF/keycloak.json.<br class=""><br class=""></div><div class="">Our use case is that for developers we have a default keycloak.json included in the application. In production, however, we override the default by using a file that is external to the application. The location of the file is specified in JNDI settings and injected to our subclass with the help of Spring.<br class=""><br class=""></div>What do you think would such an extension to AdapterDeploymentContextBean be of general use? I'd be happy to merge our subclass to AdapterDeploymentContextBean and submit a pull request.<br class=""><br class=""></div>Best regards,<br class=""></div>Thomas<br class=""></div>
_______________________________________________<br class="">keycloak-dev mailing list<br class=""><a href="mailto:keycloak-dev@lists.jboss.org" class="">keycloak-dev@lists.jboss.org</a><br class="">https://lists.jboss.org/mailman/listinfo/keycloak-dev</div></blockquote></div><br class=""></body></html>