asp, net веб-сервис asmx и java android аутентификация - PullRequest
0 голосов
/ 29 мая 2020

через несколько дней мне удалось создать веб-службу asmx на Asp. net и использовать ее с Java Android. Теперь я хочу обезопасить доступ. Webservice.asmx находится внутри защищенной области моего веб-сайта. Область защищена с помощью формы аутентификации (пользователи / роли / членство).

Это сервисный код:

Namespace dbwebservice
<WebService(Namespace:="Http://namespace.it/")>
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)>
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
<System.Web.Script.Services.ScriptService()>
Public Class contapeopleWebService
    Inherits System.Web.Services.WebService




    <SoapRpcMethod(), WebMethod()>
    Public Function Downloadvalori(ByVal postazioneId As String) As String




        Dim eventi As List(Of conta_sqlfields) = New List(Of conta_sqlfields)()


        Dim evento



        Dim connstring = ConfigurationManager.ConnectionStrings("contaSQL").ConnectionString
        Dim conness As New Data.SqlClient.SqlConnection(connstring)

        Dim command As String = "[dbo].[conta_leggieventi]"
        Dim myOleDbCmd As New Data.SqlClient.SqlCommand(command, conness)

        myOleDbCmd.CommandType = CommandType.StoredProcedure

....

Это android код :

        String SOAP_ACTION = "Http://xxxxx.it/Downloadvalori";

        String METHOD_NAME = "Downloadvalori";
        String URL = "http://www.yyyyyyyyy.it/WebService.asmx";

        //for linear parameter
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        PropertyInfo pi = new PropertyInfo();

        pi.setName("postazioneId");
        pi.setValue(postazione);
        request.addProperty(pi);


        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = false;
        envelope.implicitTypes = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(URL);
        httpTransport.debug = true;


        try {
            httpTransport.call(SOAP_ACTION, envelope);
        } catch (HttpResponseException e) {

            Log.e("HTTPLOG", e.getMessage());
            e.printStackTrace();
        } catch (IOException e) {

            Log.e("IOLOG", e.getMessage());
            e.printStackTrace();
        } catch (XmlPullParserException e) {

            Log.e("XMLLOG", e.getMessage());
            e.printStackTrace();
        } //send request

        Object result = null;
        try {
            result = (Object) envelope.getResponse();
            Log.i("RESPONSE", String.valueOf(result)); // see output in the console

            risultato = String.valueOf(result);

        } catch (SoapFault e) {


            Log.e("requestDump", httpTransport.requestDump.toString());

            Log.e("responseDump", httpTransport.responseDump.toString());

            Log.e("SOAPLOG", e.getMessage());
            e.printStackTrace();
        }

.....

Вопрос: как я могу передать пользователя / пароль с кодом android ?? Что мне делать на стороне asp. net ?? Нужно ли мне немного настроить web.config ??

Я новичок ie так что будьте милосердны !!

Спасибо.

EDIT: может быть, это Неправильный способ задать вопрос ???

Я имею в виду ...

Я могу добавить заголовок к java коду, содержащий пользователя и пароль следующим образом:

  envelope.headerOut = new Element[1];
        envelope.headerOut[0] = buildAuthHeader();

    private Element buildAuthHeader() {
    Element h = new Element().createElement(NAMESPACE, "AuthHeader");
    Element username = new Element().createElement(NAMESPACE, "user");
    username.addChild(Node.TEXT, "testuser");
    h.addChild(Node.ELEMENT, username);
    Element pass = new Element().createElement(NAMESPACE, "pass");
    pass.addChild(Node.TEXT, "testpassword");
    h.addChild(Node.ELEMENT, pass);

    return h;
}

но как мне получить эти значения в службе asp. net ?? Если я перенесу свою службу в аутентифицированную область (с этими учетными данными), она не будет работать ...

...