Web-сервисы

Содержание

Слайд 2

Понятие сервиса

Сервисы в Web являются наследниками COM-объектов в обычных и распределенных приложениях.

Понятие сервиса Сервисы в Web являются наследниками COM-объектов в обычных и распределенных

COM-объекты предоставляли любому приложению доступ к своим функциональным возможностям при помощи стандартизованных интерфейсов.
Web-сервисы также обладают некоторой функциональностью, связываются с клиентской частью, передают результаты работы и получают команды от клиента по протоколу HTTP.

Слайд 3

Понятие сервиса

Web-сервис предоставляет клиентским приложениям стандартизованные интерфейсы.
Использование независимого от платформы протокола HTTP

Понятие сервиса Web-сервис предоставляет клиентским приложениям стандартизованные интерфейсы. Использование независимого от платформы
позволяет создавать один Web-сервис и множество клиентских приложений на самых различных операционных системах.
Web-сервисы могут принимать запросы, основанные на метолах GET и POST, а также запросы на языке SOAP.

Слайд 4

Функционирование сервиса

Сервис работает на сервере.
Сервис принимает запросы, отправленные по протоколу HTTP.
Сервис

Функционирование сервиса Сервис работает на сервере. Сервис принимает запросы, отправленные по протоколу
передает клиентскому приложению информацию о выполняемых сервисом действиях на языке XML.
Клиентское приложение анализирует полученную информацию о функциональности сервиса и вызывает одну из его функций, пользуясь зыком XML и протоколом HTTP.

Слайд 5

Функционирование сервиса

Сервис выполняет затребованную клиентом функцию, а результаты ее выполнения передает клиенту.

Функционирование сервиса Сервис выполняет затребованную клиентом функцию, а результаты ее выполнения передает

Использование в качестве способа общения между сервисом и клиентом языка XML и общепринятого протокола HTTP позволяет создавать клиентские приложения практически на любой компьютерной платформе.

Слайд 6

Слайд . Создание сервисов

Проект WebService1
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public bool Validate(string t)
{
if

Слайд . Создание сервисов Проект WebService1 [WebMethod] public string HelloWorld() { return
(t.Equals(“text"))
return true;
else
return false;

Слайд 7

Слайд . Просмотр сервиса в браузере по адресу http://adm-119-1/PolyakovaLN/ WebService2/Service1.asmx

Слайд . Просмотр сервиса в браузере по адресу http://adm-119-1/PolyakovaLN/ WebService2/Service1.asmx

Слайд 8

Результатом работы созданного Web-сервиса является XML-документ.
Клиентское приложение получит этот XML-документ ,

Результатом работы созданного Web-сервиса является XML-документ. Клиентское приложение получит этот XML-документ ,
само обработает его и выдаст результат пользователю.
Таким образом, был создан сервис, который сам документирует себя, принимает данные тремя различными способами по протоколу HTTP и возвращает результат работы на языке XML.

Слайд 9

Самодокументирование Web-сервисов

При создании Web-сервиса компилятор одновременно создает WSDL-файл, в котором описана структура

Самодокументирование Web-сервисов При создании Web-сервиса компилятор одновременно создает WSDL-файл, в котором описана
сервиса. Именно на основе этого файла клиенты получают информацию о функциональности сервиса.
Файл WSDL (Web Service Descriptor Language) является обычным XML-файлом и доступ к нему можно получить из браузера.

Слайд 10

Слайд . Использование сервисов

Проект WebApplication1
1. Подключить сервис в Solution Explorer
ПК ADD

Слайд . Использование сервисов Проект WebApplication1 1. Подключить сервис в Solution Explorer
Add Web References, указав адрес сервиса
http://adm-119-1/PolyakovaLN/WebService1/Service1.asmx.
И присвоив ему имя adm.

Слайд 11

Слайд . Подключение Web-сервиса в Web-приложении

Слайд . Подключение Web-сервиса в Web-приложении

Слайд 12

Слайд . Подключение Web-сервисов в программном коде

2. В объявлении
WebApplication1.adm.Service1 my=new WebService1.adm.Service1();
3. В

Слайд . Подключение Web-сервисов в программном коде 2. В объявлении WebApplication1.adm.Service1 my=new
методе Page_Load установка пользовательских реквизитов
my.PreAuthenticate = true;
my.Credentials = System.Net.CredentialCache. DefaultCredentials;
Или (пример открытой аутентификации)
my.Credentials=new NetworkCredential("PolyakovaLN",“password");

Слайд 13

Слайд . Аутентификация Web-сервиса

Аутентификация — это возможность доказать, что объект — например,

Слайд . Аутентификация Web-сервиса Аутентификация — это возможность доказать, что объект —
пользователь или компьютер — является именно тем, за кого он себя выдает. Можно подтвердить подлинность, если иметь в наличии объект, который предоставляет данные для аутентификации. Данные аутентификации часто задаются в форме имени пользователя и пароля. Необходимо отметить, что некоторые протоколы аутентификации более защищены, чем другие. Поэтому нужно точно убедиться, что идентификационные данные действительно получены от корректного пользователя, а не от хакера.

Слайд 14

Слайд . Протоколы аутентификации

Web-сервис, выполняющийся на верхнем уровне IIS, имеет большое число

Слайд . Протоколы аутентификации Web-сервис, выполняющийся на верхнем уровне IIS, имеет большое
доступных ему протоколов аутентификации.
Наиболее значимые:
анонимная аутентификация (Anonymous authentication);
открытая аутентификация (Basic authentication);
краткая аутентификация (Digest authentication);
Windows-аутентификация;
аутентификация, основанная на сертификатах;
аутентификация, основанная на формах;

Слайд 15

Слайд . Открытая аутентификация

В серверах IIS версий 5 и 6 учетные

Слайд . Открытая аутентификация В серверах IIS версий 5 и 6 учетные
записи, предназначенные для открытой аутентификации, должны быть допустимыми учетными записями Windows. Однако когда открытая аутентификация применяется в ASP.NET или, допустим, в Web-сервисе, написанном с помощью ASP.NET, то можно использовать подход, применяемый в базах данных, для определения корректности параметров идентификации. Можно установить открытую аутентификацию и с помощью средств администрирования IIS. Следует отметить, что открытая аутентификация чрезвычайно ненадежна, особенно без применения технологий защиты канала связи SSL/TLS.

Слайд 16

Слайд . Создание аутентифицированной связи

Для создания аутентифицированной связи с Web-сервисом можно использовать

Слайд . Создание аутентифицированной связи Для создания аутентифицированной связи с Web-сервисом можно
такой код (этот код будет работать для открытой, краткой и Windows-аутентификаций):
using System;
using System.Net;
using System.Web.Services.Protocols;
ClientApp.locaIhostService s=new ClientApp.localhostService();
s.Credentials=new NetworkCredential(username, password, domain);
string shipped = s.GetShippingStatus(" 10001");

Слайд 17

Слайд . Windows-аутентификация

Имя вызываемого пользователя можно получить, используя в Web-сервисе следующий код:
System.Security.Principal.WindowsIdentity

Слайд . Windows-аутентификация Имя вызываемого пользователя можно получить, используя в Web-сервисе следующий
wi = WindowsIdentity.GetCurrent();
string name = wi.Name;
В приложении имя пользователя можно прочитать:
this.Response.Write("name="+name+"
");
В результате получим:
name=NT AUTHORITY\NETWORK SERVICE

Слайд 18

Слайд . Использование Web-сервиса в приложении

private void Button1_Click(object sender, System.EventArgs e)
{
this.Label1.Text=my.HelloWorld();
if(my.Validate(TextBox1.Text))
this.Label1.Text="YES";
else

Слайд . Использование Web-сервиса в приложении private void Button1_Click(object sender, System.EventArgs e)
this.Label1.Text="NO";
}

Слайд 19

Слайд . Параметры безопасности Web-сервисов

При создании корпоративного XML Web-сервиса обычно требуется обеспечить

Слайд . Параметры безопасности Web-сервисов При создании корпоративного XML Web-сервиса обычно требуется
проверку прав пользователя. Существует два набора параметров для обеспечения безопасности в XML Web-сервисах.
Параметры встроенной безопасности IIS. Их достоинство заключается в том, что не требуется дополнительная база данных пользователей, однако создание записи доменного пользователя для каждого клиента вряд ли можно считать идеальным решением для приложений Internet.
Второй набор параметров предусматривает один из видов специальной аутентификации:

Слайд 20

Слайд . Специальная аутентификация

Прием и пересылка имени и пароля пользователя как параметров

Слайд . Специальная аутентификация Прием и пересылка имени и пароля пользователя как
вызова метода;
Создание некоторого метода Login, который вызывается раньше других методов. В дальнейшем для проверки правомочности пользователя достаточно cookie-файлов;
Применение заголовков или тела SOAP-сообщений для хранения пользовательских реквизитов;
Создание специального заголовка HTTP для передачи входных данных.

Слайд 21

Слайд . Прием и пересылка имени и пароля пользователя как параметров вызова

Слайд . Прием и пересылка имени и пароля пользователя как параметров вызова
метода

Первый из перечисленных параметров аутентификации самый простой и меньше всех подвержен сбоям по причине неудачной конфигурации клиента. При вызове метода имя и пароль пользователя передаются в виде параметров. Далее они сравниваются со сведениями, хранящимися в базе данных.

Слайд 22

Слайд . Создание таблицы в среде MS SQL Server

create table tab_user
(id_user int

Слайд . Создание таблицы в среде MS SQL Server create table tab_user
identity(1,1) primary key,
name_user varchar(20),
login_user varchar(20),
pas_user varchar(10))
insert into tab_user values('Полякова','PolyakovaLN',
‘password')

Слайд 23

Слайд . Создание хранимой процедуры в среде MS SQL Server

create proc proc_user
@us

Слайд . Создание хранимой процедуры в среде MS SQL Server create proc
varchar(20),
@pw varchar(10),
@fam varchar(20) output
as
select @fam=name_user
from tab_user
Where login_user=@us and pas_user=@pw

Слайд 24

Слайд . Проверка процедуры

declare @t varchar(20)
exec proc_user 'PolyakovaLN',
‘password',
@t output
select @t

Слайд . Проверка процедуры declare @t varchar(20) exec proc_user 'PolyakovaLN', ‘password', @t output select @t

Слайд 25

Слайд . Использование хранимой процедуры в Web-сервисе или приложении

public class Form1 :

Слайд . Использование хранимой процедуры в Web-сервисе или приложении public class Form1
System.Windows.Forms.Form
{
private System.Data.SqlClient.SqlConnection sqlConnection1;
private System.Data.SqlClient.SqlCommand sqlCommand1;

Слайд 26

Слайд .

private void InitializeComponent()
{
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
this.sqlCommand1 = new System.Data.SqlClient.SqlCommand();

Слайд . private void InitializeComponent() { this.sqlConnection1 = new System.Data.SqlClient.SqlConnection(); this.sqlCommand1 = new System.Data.SqlClient.SqlCommand();

Слайд 27

Слайд . Настройка строки соединения

//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = “…";

Слайд . Настройка строки соединения // // sqlConnection1 // this.sqlConnection1.ConnectionString = “…";

Слайд 28

Слайд . Настройка команды

//
// sqlCommand1
//
this.sqlCommand1.CommandText = "proc_user";
this.sqlCommand1.CommandType = System.Data.CommandType.StoredProcedure;
this.sqlCommand1.Connection =

Слайд . Настройка команды // // sqlCommand1 // this.sqlCommand1.CommandText = "proc_user"; this.sqlCommand1.CommandType
this.sqlConnection1;
this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@us", System.Data.SqlDbType.VarChar, 20));

Слайд 29

Слайд .

this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@pw", System.Data.SqlDbType.VarChar, 10));
this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@fam", System.Data.SqlDbType.VarChar, 20, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)),

Слайд . this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@pw", System.Data.SqlDbType.VarChar, 10)); this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@fam", System.Data.SqlDbType.VarChar, 20, System.Data.ParameterDirection.Output, false,
"", System.Data.DataRowVersion.Current, null));

Слайд 30

Слайд . Вызов процедуры из Web-сервиса

try
{
this.sqlConnection1.Open();
this.sqlCommand1.Parameters["@us"].Value="PolyakovaLN";
this.sqlCommand1.Parameters["@pw"].Value="passworw";
this.sqlCommand1.ExecuteNonQuery();
string res=this.sqlCommand1.Parameters["@fam"].Value.ToString();

Слайд . Вызов процедуры из Web-сервиса try { this.sqlConnection1.Open(); this.sqlCommand1.Parameters["@us"].Value="PolyakovaLN"; this.sqlCommand1.Parameters["@pw"].Value="passworw"; this.sqlCommand1.ExecuteNonQuery(); string res=this.sqlCommand1.Parameters["@fam"].Value.ToString();

Слайд 31

Слайд .

if (res!="")
this.label1.Text=res;
else
this.label1.Text="Доступа нет";
}

Слайд . if (res!="") this.label1.Text=res; else this.label1.Text="Доступа нет"; }

Слайд 32

Слайд .

catch(Exception ex)
{
this.label1.Text=ex.Message;
}

Слайд . catch(Exception ex) { this.label1.Text=ex.Message; }

Слайд 33

Слайд . Пример сервисов для получения различной информации

[WebMethod]
public string method1()
{
return "User"+this.User.ToString();
}
[WebMethod]
public

Слайд . Пример сервисов для получения различной информации [WebMethod] public string method1()
string method2()
{
return "Context Server"+this.Context.Server.ToString();
}
[WebMethod]
public string method3()
{
return "Server"+this.Server.ToString();
}

Слайд 34

Слайд . Пример подключения сервисов в приложении

this.Response.Write(my.method1()+"
");
this.Response.Write(my.method2()+"
");
this.Response.Write(my.method3()+"
");
this.Response.Write(my.Url.ToString()+"
");
this.Response.Write(my.UserAgent.ToString()+"
");
this.Response.Write(my.ClientCertificates.ToString()+ "
");

Слайд . Пример подключения сервисов в приложении this.Response.Write(my.method1()+" "); this.Response.Write(my.method2()+" "); this.Response.Write(my.method3()+"

Слайд 35

Слайд . Результат работы приложения

UserSystem.Security.Principal.WindowsPrincipal
Context ServerSystem.Web.HttpServerUtility
ServerSystem.Web.HttpServerUtility
http://adm-119-1/PolyakovaLN/WebService2/Service1.asmx
Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services

Слайд . Результат работы приложения UserSystem.Security.Principal.WindowsPrincipal Context ServerSystem.Web.HttpServerUtility ServerSystem.Web.HttpServerUtility http://adm-119-1/PolyakovaLN/WebService2/Service1.asmx Mozilla/4.0 (compatible;
Client Protocol 1.1.4322.2300)
System.Security.Cryptography.X509Certificates.X509CertificateCollection

Слайд 36

1 вариант защиты сервиса–файл Web.config


1 вариант защиты сервиса–файл Web.config
/>




Слайд 37

2 вариант защиты метода в сервисе

[WebMethod]
public string method1 ()
{
WindowsIdentity wi= WindowsIdentity.GetCurrent();
if (wi.Name=="3CASE\\YakimkinVV")

2 вариант защиты метода в сервисе [WebMethod] public string method1 () {
return "DENY";
return wi.Name;
}
Имя файла: Web-сервисы.pptx
Количество просмотров: 260
Количество скачиваний: 1