C sharp - Web services con autenticación oAuth2

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 15 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Web services con autenticación oAuth2

Publicado por Aitor (5 intervenciones) el 07/03/2022 11:23:07
Buenos dias,

Lo primero comentar que no soy ningun experto en programación web, pero por rebote y por las integracion que he tenido que hacer para el ERP business central(BC), en su momento me tocó hacer una webApp.

Esta apliación se conecta a servicios web de BC. Estos servcios en el visual studio los he incluido como service reference, y la autenticacion es usuario/contraseña.
Una llamada al servicio se hace de esta forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
protected void ValidateEmployee()
        {
            var appSettings = ConfigurationManager.AppSettings;
            string user = appSettings["user"].ToString();
            string pswd = appSettings["pswd"].ToString();
            string WHS_MGMT = appSettings["WHS_MGMT"].ToString();
            string ItemTRacking = appSettings["ItemTRacking"].ToString();
 
            WHS_MGMT ws = new WHS_MGMT();
            ws.Credentials = new System.Net.NetworkCredential(user, pswd);
            ws.Url = WHS_MGMT;
            String codOperario = txtCodigo.Text.ToUpper();
            string userPswd = txtPSWD.Text;
            if (ws.Login(codOperario, userPswd))
            {
                Response.Redirect("Default.aspx?codOperario=" + codOperario);
            }
            else
            {
                lblOpIncorrecto.Text = "Operario/contraseña incorrecto";
                lblOpIncorrecto.Visible = true;
            }
        }

Pero en proximas semanas, la autenticacion contra los webServices en BC tendra que ser obligatoriamente oAuth2. He encontrado varios ejemplos para poder obtener el token, a priori no debeira teenr problema. Pero el problema lo encuentro a la hora de aplicar ese token para autenticar la llamada al servicio web. Es posible hacerlo con la forma que he desarrollado, es decir, referencias de servicio, credentials....

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1
Ha disminuido su posición en 15 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Web services con autenticación oAuth2

Publicado por Aitor (5 intervenciones) el 07/03/2022 17:25:44
Gracias Agustin, voy a echarle un ojo a ver si me aclaro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1
Ha disminuido su posición en 15 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Web services con autenticación oAuth2

Publicado por Aitor (5 intervenciones) el 08/03/2022 13:08:18
Buenos dias,

Por lo que veo aqui

1
2
3
4
5
var httpHeaders = new Dictionary<string, string>();
    httpHeaders.Add("header1", "value1");
    httpHeaders.Add("header2", "value2");
 
    _serviceRef.Endpoint.Behaviors.Add(new HttpHeadersEndpointBehavior(httpHeaders));

Entiendo que _serviceRef es la referencia de servicio, lo que en mi caso seria "ws". Pero a mi variable ws no me sale la propiedad de añadirle el endpoint. Entiendo que tenga que añadirle las cabeceras a una petición, y esa peticion incluirla en mi referencia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1
Ha disminuido su posición en 15 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

Web services con autenticación oAuth2

Publicado por Aitor (5 intervenciones) el 10/03/2022 09:33:28
UPDATE.

Ya tengo el token, como puedo usarlo como credenciales? Porque me parece a mi que no se puede usar con NetworkCredentials...

1
2
3
4
5
6
AuthenticationoAuth2 cls = new AuthenticationoAuth2();
string Token = cls.GetAccessToken(AadTenantId).Result;
string aut = "Bearer "+Token;
WHS_MGMT ws = new WHS_MGMT();
ws.Credentials = new System.Net.NetworkCredential(user, pswd);//Authorization(aut).;
ws.Url = WHS_MGMT;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar