package org.ovirt.engine.ssoreg.db; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.sql.DataSource; public class DBUtils { private DataSource ds; private String unregisterClientSql; private String registerClientSql; private String scopes; public DBUtils() throws SQLException { ds = new StandaloneDataSource(); unregisterClientSql = "select sso_oauth_unregister_client(?)"; registerClientSql = "select sso_oauth_register_client(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; scopes = "openid ovirt-app-portal ovirt-app-admin ovirt-app-api ovirt-ext=auth:identity " + "ovirt-ext=token:password-access ovirt-ext=auth:sequence-priority ovirt-ext=token:login-on-behalf " + "ovirt-ext=token-info:authz-search ovirt-ext=token-info:public-authz-search " + "ovirt-ext=token-info:validate ovirt-ext=revoke:revoke-all"; } public void unregisterClient(String clientId) throws SQLException { try ( Connection connection = ds.getConnection(); PreparedStatement prepareStatement = connection.prepareStatement(unregisterClientSql) ) { prepareStatement.setString(1, clientId); prepareStatement.execute(); } } public void registerClient(String clientId, String clientSecret, String certificate, String callbackPrefix) throws SQLException { try ( Connection connection = ds.getConnection(); PreparedStatement prepareStatement = connection.prepareStatement(registerClientSql) ) { prepareStatement.setString(1, clientId); //client_id prepareStatement.setString(2, clientSecret); //client_secret prepareStatement.setString(3, scopes); //scopes prepareStatement.setString(4, certificate); //certificate prepareStatement.setString(5, callbackPrefix); //callback_prefix prepareStatement.setString(6, "oVirt Engine Client"); //description prepareStatement.setString(7, ""); //email prepareStatement.setBoolean(8, Boolean.TRUE); //trusted prepareStatement.setString(9, ""); //notification_callback prepareStatement.setString(10, "TLS"); //notification_callback_host_protocol prepareStatement.setBoolean(11, Boolean.FALSE); //notification_callback_host_verification prepareStatement.setBoolean(12, Boolean.TRUE); //notification_callback_chain_validation prepareStatement.execute(); } } }