Search in sources :

Example 36 with Authentication

use of org.olat.basesecurity.Authentication in project openolat by klemens.

the class UserAuthenticationWebService method getAuthenticationTokenList.

/**
 * Returns all user authentications
 * @response.representation.200.qname {http://www.example.com}authenticationVO
 * @response.representation.200.mediaType application/xml, application/json
 * @response.representation.200.doc The list of all users in the OLAT system
 * @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_AUTHVOes}
 * @response.representation.401.doc The roles of the authenticated user are not sufficient
 * @response.representation.404.doc The identity not found
 * @param username The username of the user to retrieve authentication
 * @param request The HTTP request
 * @return
 */
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response getAuthenticationTokenList(@PathParam("username") String username, @Context HttpServletRequest request) {
    if (!isUserManager(request)) {
        return Response.serverError().status(Status.UNAUTHORIZED).build();
    }
    BaseSecurity baseSecurity = BaseSecurityManager.getInstance();
    Identity identity = baseSecurity.findIdentityByName(username);
    if (identity == null) {
        return Response.serverError().status(Status.NOT_FOUND).build();
    }
    List<Authentication> authentications = baseSecurity.getAuthentications(identity);
    AuthenticationVO[] vos = new AuthenticationVO[authentications.size()];
    int count = 0;
    for (Authentication authentication : authentications) {
        vos[count++] = ObjectFactory.get(authentication, false);
    }
    return Response.ok(vos).build();
}
Also used : Authentication(org.olat.basesecurity.Authentication) RestSecurityHelper.getIdentity(org.olat.restapi.security.RestSecurityHelper.getIdentity) Identity(org.olat.core.id.Identity) AuthenticationVO(org.olat.restapi.support.vo.AuthenticationVO) BaseSecurity(org.olat.basesecurity.BaseSecurity) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 37 with Authentication

use of org.olat.basesecurity.Authentication in project openolat by klemens.

the class UserAuthenticationWebService method create.

/**
 * Creates and persists an authentication
 * @response.representation.qname {http://www.example.com}authenticationVO
 * @response.representation.mediaType application/xml, application/json
 * @response.representation.doc An authentication to save
 * @response.representation.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_AUTHVO}
 * @response.representation.200.qname {http://www.example.com}authenticationVO
 * @response.representation.200.mediaType application/xml, application/json
 * @response.representation.200.doc The saved authentication
 * @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_AUTHVO}
 * @response.representation.401.doc The roles of the authenticated user are not sufficient
 * @response.representation.404.doc The identity not found
 * @response.representation.406.doc Cannot create the authentication for an unkown reason
 * @response.representation.409.doc Cannot create the authentication because the authentication username is already used by someone else within the same provider
 * @param username The username of the user
 * @param authenticationVO The authentication object to persist
 * @param request The HTTP request
 * @return the saved authentication
 */
@PUT
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response create(@PathParam("username") String username, AuthenticationVO authenticationVO, @Context HttpServletRequest request) {
    if (!RestSecurityHelper.isUserManager(request)) {
        return Response.serverError().status(Status.UNAUTHORIZED).build();
    }
    BaseSecurity baseSecurity = BaseSecurityManager.getInstance();
    Identity identity = baseSecurity.loadIdentityByKey(authenticationVO.getIdentityKey(), false);
    if (identity == null) {
        return Response.serverError().status(Status.NOT_FOUND).build();
    }
    if (!identity.getName().equals(username)) {
        return Response.serverError().status(Status.NOT_FOUND).build();
    }
    String provider = authenticationVO.getProvider();
    String authUsername = authenticationVO.getAuthUsername();
    String credentials = authenticationVO.getCredential();
    Authentication currentAuthentication = baseSecurity.findAuthenticationByAuthusername(authUsername, provider);
    if (currentAuthentication != null) {
        if (!currentAuthentication.getIdentity().equals(identity)) {
            ErrorVO error = new ErrorVO();
            error.setCode("unkown:409");
            error.setTranslation("Authentication name used by: " + currentAuthentication.getIdentity().getUser().getEmail());
            return Response.serverError().status(Status.CONFLICT).entity(error).build();
        }
    }
    Authentication authentication = baseSecurity.createAndPersistAuthentication(identity, provider, authUsername, credentials, null);
    if (authentication == null) {
        return Response.serverError().status(Status.NOT_ACCEPTABLE).build();
    }
    log.audit("New authentication created for " + authUsername + " with provider " + provider);
    AuthenticationVO savedAuth = ObjectFactory.get(authentication, true);
    return Response.ok(savedAuth).build();
}
Also used : ErrorVO(org.olat.restapi.support.vo.ErrorVO) Authentication(org.olat.basesecurity.Authentication) RestSecurityHelper.getIdentity(org.olat.restapi.security.RestSecurityHelper.getIdentity) Identity(org.olat.core.id.Identity) AuthenticationVO(org.olat.restapi.support.vo.AuthenticationVO) BaseSecurity(org.olat.basesecurity.BaseSecurity) Consumes(javax.ws.rs.Consumes) Produces(javax.ws.rs.Produces) PUT(javax.ws.rs.PUT)

Example 38 with Authentication

use of org.olat.basesecurity.Authentication in project openolat by klemens.

the class UserAuthenticationWebService method delete.

/**
 * Deletes an authentication from the system
 * @response.representation.200.doc The authentication successfully deleted
 * @response.representation.401.doc The roles of the authenticated user are not sufficient
 * @response.representation.404.doc The identity or the authentication not found
 * @param username The username of the user
 * @param authKey The authentication key identifier
 * @param request The HTTP request
 * @return <code>Response</code> object. The operation status (success or
 *         fail)
 */
@DELETE
@Path("{authKey}")
public Response delete(@PathParam("username") String username, @PathParam("authKey") Long authKey, @Context HttpServletRequest request) {
    if (!isUserManager(request)) {
        return Response.serverError().status(Status.UNAUTHORIZED).build();
    }
    BaseSecurity baseSecurity = BaseSecurityManager.getInstance();
    Identity identity = baseSecurity.findIdentityByName(username);
    if (identity == null) {
        return Response.serverError().status(Status.NOT_FOUND).build();
    }
    List<Authentication> authentications = baseSecurity.getAuthentications(identity);
    for (Authentication authentication : authentications) {
        if (authKey.equals(authentication.getKey())) {
            baseSecurity.deleteAuthentication(authentication);
            return Response.ok().build();
        }
    }
    return Response.serverError().status(Status.NOT_FOUND).build();
}
Also used : Authentication(org.olat.basesecurity.Authentication) RestSecurityHelper.getIdentity(org.olat.restapi.security.RestSecurityHelper.getIdentity) Identity(org.olat.core.id.Identity) BaseSecurity(org.olat.basesecurity.BaseSecurity) Path(javax.ws.rs.Path) DELETE(javax.ws.rs.DELETE)

Example 39 with Authentication

use of org.olat.basesecurity.Authentication in project openolat by klemens.

the class WebDAVAuthManagerTest method updatePassword_duplicate.

/**
 * Check the case of bad data quality and duplicate institutional email
 * adresss.
 */
@Test
public void updatePassword_duplicate() {
    // create an identity
    Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("update-wedbav-2");
    Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("update-wedbav-3");
    dbInstance.commit();
    String uuid = UUID.randomUUID().toString();
    id1.getUser().setProperty(UserConstants.INSTITUTIONALEMAIL, uuid);
    id2.getUser().setProperty(UserConstants.INSTITUTIONALEMAIL, uuid);
    userManager.updateUser(id1.getUser());
    userManager.updateUser(id2.getUser());
    dbInstance.commitAndCloseSession();
    // update  password id 1
    webdavAuthManager.upgradePassword(id1, id1.getName(), "secret");
    dbInstance.commitAndCloseSession();
    // update  password id 2
    // this one will have a problem to update the password, but it need to be silent
    webdavAuthManager.upgradePassword(id2, id2.getName(), "secret");
    // check the authentication
    // check the connection is useable
    Authentication ha1InstAuthentication1 = securityManager.findAuthentication(id1, WebDAVAuthManager.PROVIDER_HA1_INSTITUTIONAL_EMAIL);
    Assert.assertNotNull(ha1InstAuthentication1);
    Authentication ha1InstAuthentication2 = securityManager.findAuthentication(id2, WebDAVAuthManager.PROVIDER_HA1_INSTITUTIONAL_EMAIL);
    Assert.assertNull(ha1InstAuthentication2);
    // check the connection is clean
    dbInstance.commit();
}
Also used : Authentication(org.olat.basesecurity.Authentication) Identity(org.olat.core.id.Identity) Test(org.junit.Test)

Example 40 with Authentication

use of org.olat.basesecurity.Authentication in project openolat by klemens.

the class WebDAVAuthManagerTest method updatePassword.

@Test
public void updatePassword() {
    // create an identity
    Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("update-wedbav-1");
    dbInstance.commitAndCloseSession();
    Assert.assertNotNull(id);
    id.getUser().setProperty(UserConstants.INSTITUTIONALEMAIL, "inst_" + id.getUser().getEmail());
    userManager.updateUser(id.getUser());
    dbInstance.commitAndCloseSession();
    // update its password
    webdavAuthManager.upgradePassword(id, id.getName(), "secret");
    // check digest providers
    Authentication ha1Authentication = securityManager.findAuthentication(id, WebDAVAuthManager.PROVIDER_HA1_EMAIL);
    Assert.assertNotNull(ha1Authentication);
    String digestEmailToken = Encoder.md5hash(id.getUser().getEmail() + ":" + WebDAVManagerImpl.BASIC_AUTH_REALM + ":secret");
    Assert.assertEquals(digestEmailToken, ha1Authentication.getCredential());
    Authentication ha1InstAuthentication = securityManager.findAuthentication(id, WebDAVAuthManager.PROVIDER_HA1_INSTITUTIONAL_EMAIL);
    Assert.assertNotNull(ha1InstAuthentication);
    String digestInstEmailToken = Encoder.md5hash(id.getUser().getInstitutionalEmail() + ":" + WebDAVManagerImpl.BASIC_AUTH_REALM + ":secret");
    Assert.assertEquals(digestInstEmailToken, ha1InstAuthentication.getCredential());
}
Also used : Authentication(org.olat.basesecurity.Authentication) Identity(org.olat.core.id.Identity) Test(org.junit.Test)

Aggregations

Authentication (org.olat.basesecurity.Authentication)82 Identity (org.olat.core.id.Identity)46 BaseSecurity (org.olat.basesecurity.BaseSecurity)16 Test (org.junit.Test)10 RestSecurityHelper.getIdentity (org.olat.restapi.security.RestSecurityHelper.getIdentity)8 AuthenticationVO (org.olat.restapi.support.vo.AuthenticationVO)8 URI (java.net.URI)6 ArrayList (java.util.ArrayList)6 Produces (javax.ws.rs.Produces)6 HttpResponse (org.apache.http.HttpResponse)6 SecurityGroup (org.olat.basesecurity.SecurityGroup)6 Locale (java.util.Locale)4 GET (javax.ws.rs.GET)4 HttpPut (org.apache.http.client.methods.HttpPut)4 AssertException (org.olat.core.logging.AssertException)4 DBRuntimeException (org.olat.core.logging.DBRuntimeException)4 Algorithm (org.olat.core.util.Encoder.Algorithm)4 TemporaryKey (org.olat.registration.TemporaryKey)4 ErrorVO (org.olat.restapi.support.vo.ErrorVO)4 UserPropertyHandler (org.olat.user.propertyhandlers.UserPropertyHandler)4