j'ai créé un service Web (je pense) qui produit cette sortie:comment sécuriser le service Web?
[{"MANAGER_ID":0,"DEPARTMENT_ID":90,"SALARY":24000,"HIRE_DATE":"1987-06-17","FIRST_NAME":"Steven","COMMISSION_PCT":0,"EMAIL":"SKING","EMPLOYEE_ID":100,"JOB_ID":"AD_PRES","PHONE_NUMBER":"515.123.4567","LAST_NAME":"King"}]
ci-dessous est mon code:
package resource;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.NamingException;
import javax.sql.DataSource;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@Path("hr")
public class HumanResources {
@SuppressWarnings("unused")
@Context
private UriInfo context;
/**
* Default constructor.
*/
public HumanResources() {
// TODO Auto-generated constructor stub
}
/**
* Retrieves representation of an instance of HumanResources
* @return an instance of String
* @throws NamingException
* @throws SQLException
*/
@GET
@Produces("application/json")
public String getText() throws JSONException, NamingException, SQLException {
// TODO return proper representation object
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr");
Statement sel = conn.createStatement();
ResultSet rs = sel.executeQuery("select * from employees where rownum <= 5");
JSONObject employees = new JSONObject();
JSONArray emp = new JSONArray();
while (rs.next()) {
JSONObject employee = new JSONObject();
employee.put("EMPLOYEE_ID", rs.getInt("EMPLOYEE_ID"));
employee.put("FIRST_NAME", rs.getString("FIRST_NAME"));
employee.put("LAST_NAME", rs.getString("LAST_NAME"));
employee.put("EMAIL", rs.getString("EMAIL"));
employee.put("PHONE_NUMBER", rs.getString("PHONE_NUMBER"));
employee.put("HIRE_DATE", rs.getDate("HIRE_DATE"));
employee.put("JOB_ID", rs.getString("JOB_ID"));
employee.put("SALARY", rs.getDouble("SALARY"));
employee.put("COMMISSION_PCT", rs.getDouble("COMMISSION_PCT"));
employee.put("MANAGER_ID", rs.getInt("MANAGER_ID"));
employee.put("DEPARTMENT_ID", rs.getInt("DEPARTMENT_ID"));
emp.put(employee);
}
employees.put("EMPLOYEES", emp);
sel.close();
return emp.toString();
}
/**
* PUT method for updating or creating an instance of HumanResources
* @param content representation for the resource
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Consumes("text/plain")
public void putText(String content) {
}
}
de quelle manière puis-je obtenir cela si je voulais ajouter un schéma d'authentification avant d'accéder aux données? Dans mon autre système, j'ai créé une fonction au niveau de la base de données (Oracle) qui accepte un nom d'utilisateur et un mot de passe et renvoie soit vrai si valide et faux sinon. puis-je l'utiliser ou dois-je le faire d'une autre manière?
apprécier toute aide.
merci.
salut, merci pour la réponse. voulait confirmer quelques choses. _Appelez la méthode Authentification (String userName, String userPassword). _ Devrais-je ajouter cette fonction d'authentification dans ma classe HumanResources? _La méthode renvoie à l'utilisateur une chaîne de session unique (la méthode l'enregistre également dans une base de données) ._ Donc, fondamentalement, je vais devoir créer une procédure qui génère une chaîne de session unique puis l'enregistre dans une table que je vais créer c'est à dire. user_sessions? – adshocker
_ "La méthode vérifie si le message d'authentification fourni peut être trouvé dans la base de données et n'a pas expiré." _ - devrait-il aussi figurer dans la classe HumanResources? – adshocker
Les 'Authentication' et' CheckToken' (vous pouvez les nommer comme vous le souhaitez) peuvent être placés n'importe où; comme ils ne sont pas liés à une classe spécifique (ce sont des méthodes auxiliaires) je les placerais dans une classe statique 'Utilities' ou quelque chose comme ça, assurez-vous simplement qu'ils peuvent être appelés depuis chaque WebMethod que vous avez. – Albireo