Pull to refresh

Аутентификация и авторизация в ASP.NET Web API

Website development *.NET *API *
Translation
Tutorial
Вы создали WebAPI и теперь хотите контролировать доступ к нему? В этой серии статей мы рассмотрим несколько вариантов защиты WebAPI от неавторизрованых пользователей. Серия будет охватывать обе стороны, и аутентификацию и авторизацию пользователей.

  • Аутентификация — позволяет однозначно идентифицировать пользователя. Например, Алиса входит в систему со своим логином и паролем, и сервер использует эти данные для аутентификации Алисы.
  • Авторизация решает может ли пользователь выполнить те или иные действия. Например, Алиса может иметь право на чтение ресурса, но не может создать новый ресурс.


Первая серия статей дает общий обзор аутентификации и авторизации в ASP.NET Web API. Другие статьи описывают общие сценарии аутентификации для WebAPI.
Раскрыть тему
Total votes 23: ↑19 and ↓4 +15
Views 73K
Comments 17

Breeze.js + Entity Framework + Angular.js = удобная работа с сущностями базы данных прямо из браузера

Website development *.NET *Angular *
Sandbox
    

Некоторое время назад на просторах сети столкнулся с интересной библиотекой Breeze.js. Первая мысль, которая пришла на ум при взгляде на неё: «Да это же как Entity Framework для браузера». В поисках информации и отзывов других пользователей, конечно, первым делом поискал статью на Хабре, но не нашёл, поэтому и решил написать, в надежде, что кому-нибудь это тоже будет полезным. Статья написана в виде tutorial по созданию проекта на основе Breeze.js, Angular.js, ASP.NET Web API и Entity Framework.
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Views 19K
Comments 13

JavaScript-приложение, или зачем нам Razor в ASP.NET MVC?

Website development *JavaScript *.NET *
image

Не думал, что напишу это, но JavaScript победил. Мы перестали использовать Razor для создания веб-приложений. Вместо этого реализуем front-end в отдельном проекте на JavaScript-фреймворках. От ASP.NET остался только WebAPI и «движок», на котором мы пишем бизнес-логику и API для пользовательского интерфейса.

Читать дальше →
Total votes 22: ↑14 and ↓8 +6
Views 22K
Comments 22

Распространение iOS приложений по ссылке в корпоративной среде, используя стек технологий Microsoft

.NET *Development for iOS *Development of mobile applications *C# *
Tutorial


Недавно стало известно о покупке Xamarin компанией Microsoft. Данная новость не осталась незамеченной среди сообщества разработчиков, а также, среди корпоративных клиентов. В связи с этим, становятся более актуальны истории, где в Microsoft Full Stack окружение необходимо интегрировать мобильные решения, не приводящие при этом к необходимости драматического расширения набора компетенции IT-отела, либо компании в целом. Для таких сценариев становится лаконичным выбор Xamarin, как компонента, хорошо вписывающегося в пазл, состоящий из SharePoint, ASP.NET MVC, WebAPI services и Azure.
В рамках данной статьи описывается метод распространения мобильного приложения внутри компании, преимущественно на этапе прототипирования, используя перечисленный стек технологий Microsoft.
Описываемый в статье метод, несмотря на уклон в .NET окружение, применим к iOS-приложениям, написанным при помощи любого другого инструмента разработки, будь то Apache Cordova или классический натив.
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Views 10K
Comments 0

Захвати и визуализируй! Или гистограмма с микрофона средствами Web Audio API

Developer Soft corporate blog JavaScript *Programming *Data visualization


Я очень люблю «живые» графики. Смертельная скука — смотреть на статичные картинки с цифрами. Мне хочется, чтобы график завораживал, чтобы заставлял человека, который смотрит на него, взаимодействовать и открывать для себя новые грани всех данных на нем. Поэтому любой пример, что попадает мне в руки, и любая библиотека визуализации, которой не повезло оказаться на моей машине, проходит испытание “оживлением”. Вот и в очередной раз, раздумывая, как же еще я могу раскорячить визуализационные виджеты из DevExtreme библиотеки, я задумалась об отображении звука. «Интересно и живо» — подумала я в тот день, запаслась чаем с печеньками и засела за эту задачу. Что у меня в итоге вышло — узнаете под катом.
Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Views 16K
Comments 15

Фреймворк Silicon — WebAPI на C++

Инфопульс Украина corporate blog Programming *C++ *API *
Translation
Tutorial
Прим. переводчика: в синтаксисе C++ напрочь отсутствуют несколько ограниченны средства построения предметно-ориентированных языков. В итоге их мало кто на С++ пытается использовать, а попытки всё же это сделать вызывают интерес, тем более, когда в итоге получается нечто стройно выглядящее и практически полезное. Одним из таких открытий для меня стал фреймворк Silicon, пытающаяся средствами современного С++ дать возможность быстро и гибко реализовать WebAPI в своём проекте. Давайте посмотрим, насколько просто это выглядит.

Hello World на Silicon — программа, которая на HTTP-запрос к
http://host/hello/world
ответит кодом 200 с текстом «hello world»:
auto my_api = http_api(GET / _hello / _world  = [] () { return "hello world";});
mhd_json_serve(my_api, 80);


Неплохо, правда? my_api здесь это описание нашего API, а mhd_json_serve — это бекэнд фреймворка Silicon, реализующий данный API с использованием встроенного вебсервера (на выбор microhttpd или LWAN).

Давайте посмотрим, что ещё умеет Silicon.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Views 12K
Comments 35

Angular.js — разработка webApi модуля

Website development *JavaScript *Angular *
Sandbox
Желание разработать собственный Angular.js webApi модуль возникло при работе с большим количеством http-запросов в проекте.

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



Задачи, которые должен решать будущий webApi модуль:


  1. Предотвратить дублирование http-запросов в проекте.
  2. Группировать существующий список запросов по функциональным категориям, чтобы проще вносить правки в конкретные методы.
  3. Быть полностью независимой функциональной единицей приложения, которая подключается к любому другому Angular.js проекту простым Dependency Injection'ом.
  4. Инкапсулировать внутреннюю реализацию, чтобы избежать проблем при работе с внешними источниками.



Демо


Посмотреть исходный код модуля: github.


Дальше поговорим о каждом из этих пунктов подробнее.

Читать дальше →
Total votes 5: ↑3 and ↓2 +1
Views 6.6K
Comments 4

Думы о web-API. часть вторая

API *
Приближение второе: Правильный путь

Если вдруг вы пропустили первое приближение, его можно найти здесь. А в этом приближении я хотел бы отдельно поговорить о подходах к построению уникальных путей к ресурсам и методам вашего web API и о тех архитектурных особенностях приложения, которые влияют на внешний вид этого пути и его компоненты.
Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Views 5.7K
Comments 5

Настройка Swashbuckle (Swagger) для WebAPI

Website development *.NET *Designing and refactoring *
Кто хоть раз тестировал свой WebAPI знает такие инструемнты, как Postman или Advanced REST (экстеншены для Chrome). Эти инструемнты всем удобны, кроме того, что не умеют сами узнавать какие модели принимает API, какие отдает и не предоставляет информацию обо всех возможных эндпоинтах. Это неудобство решает пакет Swashbuckle, который встраивает в проект генерацию Swagger спецификации и UI. Под катом коротко о том, как его прикрутить к проекту и некоторые детали относительно авторизации и работы с «перегруженными» эндпоинтами.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 50K
Comments 11

ASP.NET Core: Разработка приложений ASP.NET Core с помощью dotnet watch

Microsoft corporate blog Open source *.NET *ASP *C# *
Translation
Tutorial
В этом руководстве мы воспользуемся существующим приложением WebApi (оно вычисляет сумму и произведение двух чисел), чтобы продемонстрировать варианты использования dotnet watch. Образец приложения специально содержит ошибку, которую мы исправим во время изучения.


Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Views 13K
Comments 7

ASP.NET Core: Создание справочных страниц веб-API ASP.NET с помощью Swagger

Microsoft corporate blog Open source *.NET *ASP *C# *
Translation
Tutorial
При создании высоконагруженных приложений бывает сложно разобраться в различных API. Сформировать качественную документацию и справочные страницы в рамках веб-API посредством Swagger с интеграцией Swashbuckle .NET Core так же просто, как добавить пару пакетов NuGet и изменить Startup.cs.


Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Views 38K
Comments 2

Переход с ASP.NET на Angular2 с особенностями (личный опыт)

.NET *ASP *Angular *
Sandbox
Развернутая тема: разделение ASP.NET на Front-End (Angular) и Back-End (WebApi)

Особенности: корпоративная разработка (следовательно основной браузер — IE, веб сервер — IIS, среда — Windows); это частичный рефакторинг, а скорее редизайн веб части (имеется legacy код, ориентация на имеющийся UX);

Причины и цели: Цель — редизайн архитектуры веб составляющей (в текущей версии ASP.NET Forms + WCF), по причине невозможности/сложности решения возникших проблем и новых требований (полное обновление страниц после постбэка, повторная отправка формы, сложная навигация и связанные с этим проблемы с данными в формах).
image

Все описанное базируется на личном опыте (или, соответственно, его отсутствии — еще месяц назад о Node.js и Angular я не знал ничего кроме названия). Если краткое описание статьи заинтересовало — начнем.
Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Views 12K
Comments 24

Sharing общих сборок между процессами и доменами в IIS

.NET *ASP *IIS *C# *
Sandbox

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


В этой статье будут показаны пути оптимизации исключительно за счет настроек сервера, таким образом переписывание и перекомпиляция приложений не потребуется. Будет достигнут результат 25 Мб в среднем на один микросервис.

Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views 5.9K
Comments 9

Простая реализация Token для взаимодействия мобильного приложения с WebAPI

Development of mobile applications *Visual Studio *API *C# *Xamarin *
Sandbox
С недавнего времени занялся разработкой мобильных приложений с помощью Xamarin.Forms в связи с производственной так сказать необходимостью. Не буду конечно рассказывать про танцы с бубнами чтобы написать и запустить на эмуляторе приложение «Hello, World!», но главное разработка пошла достаточно плавно.

Благо и понимание задачи было — а именно — взаимодействие мобильного приложения с базой данных внутренней CRM системы в компании, добавить сотрудникам мобильности, но при этом не забывать и о безопасности. Было принято решение создать WebAPI, ибо чтобы работать с уже привычными ASMX веб-сервисами в Xamarin нужно плясать с бубнами.

Как сказал выше, в том числе хотелось сделать «связующее звено» достаточно безопасным, а значит мобильное приложение должно иметь авторизацию (до кучи и удобства с возможностью сохранения авторизации и автоматического входа.

Не хотелось глубоко копаться в реализации WebAPI с авторизацией на уровне Token, а хотелось сделать что-то попроще, тем более пока «гуглил» видел что такого желания у людей с избытком, но все отсылы отвечающих были либо к стандартным механизмам, либо использования каких-нибудь пакетов из NuGet, чего хотелось бы по максимуму избежать.

В базе собственной CRM и так уже есть вся информация для авторизации и городить что-то лишнее тупо не хотелось.

В итоге, после долгих мытарств, поисков и т.п. — думаю у меня получилось достаточно неплохое решение, которым мне и хочется поделится с сообществом.
Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views 8.2K
Comments 13

Как написать вредное API

Ostrovok.ru corporate blog Abnormal programming *System Analysis and Design *Delirium coding XML *

Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.


Всем привет!


Я работаю тимлидом команды Integration Development в сервисе онлайн-бронирования отелей Ostrovok.ru и сегодня хотел бы поделиться своим опытом работы с различными API.



Как разработчик системы, работающей с внешними поставщиками, я часто встречаюсь с различными API – чаще всего это SOAP/REST или что-то на них похожее. Однако от работы со многими из них остается впечатление, что их писали, не руководствуясь ни техническими правилами, ни здравым смыслом – как будто бы по книге “Вредные советы” Григория Остера. В данной статье я постараюсь описать такие случаи в стиле “вредных советов” и рассмотрю примеры, связанные с XML. Комментарии и обсуждение приветствуются.

Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 5.9K
Comments 8

ASP.NET Web API + Entity Framework + Microsoft SQL Server + Angular. Часть 1

.NET *ASP *Microsoft SQL Server *API *C# *


Введение


Небольшой курс по созданию простого веб-приложения с помощью технологий ASP.NET Core, фреймворка Entity Framework, СУБД Microsoft SQL Server и фреймворка Angular. Тестировать Web API будем через приложение Postman.

Курс состоит из нескольких частей:

  1. Создание Web API с помощью ASP.NET Web API и Entity Framework Core.
  2. Реализация пользовательского интерфейса на Angular.
  3. Добавление аутентификации в приложение.
  4. Расширение модели приложения и рассмотрение дополнительных возможностей Entity Framework.
Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Views 20K
Comments 17

Чего ждать при работе с API: 5 (не)обычных проблем при интеграции приложений

System Analysis and Design *Perfect code *Designing and refactoring *API *

Где-то на просторах мультивселенной…

Представьте на минуту, что вы капитан Сиракузии, которая в 239 году до н. э. приближается к острову Фарос, что близ города Александрии. Вслед­ст­вие узо­сти про­хо­да, вой­ти в гавань Александрии — непростая задача, в особенности, для такого корабля, как ваш. Вы слышали, что за последний год навигация около острова улучшилась, так как был завершен Фа́росский маяк, уникальное сооружение, заложенное еще при Птолемее I.

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

Почему-то, когда я думаю об интеграционных API, с которыми неудобно работать, в голове появляется образ именно такого вот маяка, и в этой статье хотелось бы рассказать о конкретных проблемах, с которыми сталкивалась наша команда в процессе интеграции с различными внешними сервисами, а также высказать своё субъективное мнение о том, что именно делает интеграционное API удобным. Итак, капитан очевидность поднялся на борт, поплыли.

Читать далее
Total votes 15: ↑15 and ↓0 +15
Views 4.5K
Comments 32

JavaScript: 2 интересных примера практического использования Intersection Observer API

Timeweb Cloud corporate blog Website development *JavaScript *Programming *


Привет, друзья!


На днях мне посчастливилось заниматься решением 2 несложных, но довольно интересных задач на чистом JavaScript (из-за React чуть не забыл, как это делается). В процессе решения этих задач никто не пострадал, напротив, все остались довольны. Поэтому я решил поделиться результатами с сообществом.


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


Введение


Итак, задачи были следующими:


  • Реализовать навигацию по разделам сайта с визуальным переключением индикатора текущего местонахождения пользователя и возможностью переходить к определенному разделу по клику. Сама навигация согласно макету должна была выглядеть так:




  • Реализовать "ленивую" (отложенную, lazy) загрузку медиаресурсов (изображений, аудио и видео), поскольку те же изображения даже после сжатия с помощью gulp-imagemin весили (и весят, потому что они никуда не делись) неприличные 50 Мб и загружались при запуске приложения (больше они себя так не ведут).
Читать дальше →
Total votes 5: ↑4 and ↓1 +3
Views 11K
Comments 19

Как обрабатывать необработанные исключения в ASP.NET Core Web API

Programming *.NET *ASP *C# *

Привет! Я Антон Антонов, Full Stack Developer. Расскажу, как обрабатываю необработанные исключения в ASP.NET Core Web API, и дам примеры обработчиков ошибок, которые отвечают наиболее распространенным требованиям.

Читать далее
Total votes 3: ↑3 and ↓0 +3
Views 3.6K
Comments 12