Hi

I would like to enable basic authentication and @RolesAllowed for restEasy on 
UndertowJaxrsServer
Can someone help me out how to enable this

I found some references to set resteasy.role.based.security but I did not find 
a way how to set this in my DeploymentInfo
        <context-param>  
          <param-name>resteasy.role.based.security</param-name>  
          <param-value>true</param-value>  
       </context-param>  

Some of my code I have been trying is. But it is not working.

        webServer = new UndertowJaxrsServer();
        Undertow.Builder serverBuilder=Undertow.builder();
        serverBuilder = 
serverBuilder.addHttpListener(Integer.parseInt(properties.getProperty("port")), 
properties.getProperty("address"));
        webServer.start(serverBuilder);

        HashMap users = new HashMap(2);
        users.put("userOne", "passwordOne".toCharArray());
        users.put("userTwo", "passwordTwo".toCharArray());
        MapIdentityManager identityManager = new MapIdentityManager(users);

        DeploymentInfo di = webServer.undertowDeployment(MyApp.class) ;
        di.setClassLoader(GetRest.class.getClassLoader())  ;
        di.setDeploymentName("My Application");
        di.setContextPath("/di");
        LoginConfig loginConfig=new LoginConfig("BASIC","MyRealm");
        di.setLoginConfig(loginConfig);
        di.setIdentityManager(identityManager);
        webServer.deploy(di);
        webServer.deploy(MyApp.class);



class MapIdentityManager implements IdentityManager {
    private final Map<String, char[]> users;

    public MapIdentityManager(Map<String, char[]> users) {
        this.users = users;
    }

    @Override
    public Account verify(Account account) {
        return account;
    }

    @Override
    public Account verify(String id, Credential credential) {
        Account account = this.getAccount(id);
        return account != null && this.verifyCredential(account, 
credential)?account:null;
    }

    @Override
    public Account verify(Credential credential) {
        return null;
    }

    private boolean verifyCredential(Account account, Credential credential) {
        if(credential instanceof PasswordCredential) {
            char[] password = ((PasswordCredential)credential).getPassword();
            char[] expectedPassword = 
(char[])this.users.get(account.getPrincipal().getName());
            return Arrays.equals(password, expectedPassword);
        } else {
            return false;
        }
    }

    private Account getAccount(final String id) {
        return this.users.containsKey(id)?new Account() {
            private final Principal principal = new Principal() {
                @Override
                public String getName() {
                    return id;
                }
            };
            @Override
            public Principal getPrincipal() {
                return this.principal;
            }
            @Override
            public Set<String> getRoles() {
                return Collections.emptySet();
            }
        }:null;
    }
}



------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users

Reply via email to