Xizmat marshrutlari asosida xizmat ko'rsatish to'plamida foydalanuvchilarni qanday qilib turlicha autentifikatsiya qilish mumkin?

Men servicesstack dan foydalanaman. APIdagi marshrut asosida foydalanuvchilarni boshqacha tarzda autentifikatsiya qilishni xohlayman. Masalan: Agar foydalanuvchi kompaniya marshrutidan foydalanayotgan bo'lsa: /api/company (POST) (kompaniya ma'lumotlariga yangilash) Men super administrator hisob qaydnomasida saqlangan asosiy kalitlardan foydalanmoqchiman (masalan). Ammo agar foydalanuvchi ba'zi bir ahamiyatsiz ma'lumotlarga kirayotgan bo'lsa, xodimlar bo'limlari deyishadi, u holda ushbu xodimning autentifikatsiyasi, Marshrut: /api/employees/74274762764/departments (GET)

Xo'sh, agar men Hisob ma'lumotlari autentifikatsiyasidan foydalanayotgan bo'lsam, buni qanday qilishim mumkin (meros olish va amalga oshirish).

Men yo'llarni aniqlayman va mantiqni yozamanmi? Bu juda mo'rt bo'ladi. Nazariy jihatdan men xizmatlarda atributni aniqlamoqchiman va kerakli autentifikatsiyani taqdim etmoqchiman. Shunday qilib, shunga o'xshash narsa:

[CorporateAuthentication] yoki [UserAuthentication], shuning uchun autentifikatsiya mantig'i foydalanuvchini qayerda tekshirish kerakligini aniqlashi mumkin.

Iltimos yordam bering.

rahmat

Amit


person Amit Jindal    schedule 03.11.2012    source manba


Javoblar (1)


Odatda turli darajadagi mavjud resurslarga ega bo'lsangiz, siz aslida boshqa yo'l bilan autentifikatsiya qilishni xohlamaysiz, aksincha, manbalar Autentifikatsiya qilingan foydalanuvchilarga biriktirilgan turli rollar yoki ruxsatlar bilan himoyalangan bo'lishini xohlaysiz.

ServiceStackning Autentifikatsiya va avtorizatsiya wiki sahifasidan qanday foydalanishga misol bor:

[Authenticate]
//All HTTP (GET, POST...) methods need "CanAccess"
[RequiredRole("Admin")]
[RequiredPermission("CanAccess")]
[RequiredPermission(ApplyTo.Put | ApplyTo.Post, "CanAdd")]
[RequiredPermission(ApplyTo.Delete, "AdminRights", "CanDelete")]
public class Secured
{
    public bool Test { get; set; }
} 

Bu oldingi StackOverflow javobi ServiceStack.

person mythz    schedule 03.11.2012
comment
Men buni allaqachon bilaman. Men ta'riflayotgan stsenariy ko'pgina funktsiyalar uchun bizda oddiy foydalanuvchi autentifikatsiyasiga ega bo'lgan holat uchun, lekin foydalanuvchi parolini tiklash yoki ba'zi maxsus narsalar uchun bizga boshqa parol kerak bo'ladi. - person Amit Jindal; 03.11.2012
comment
Sizga kerak bo'lgan xizmatlarga qo'shimcha Parol/ApiKey/Guid taqdim eta olmaysizmi? - person mythz; 03.11.2012
comment
Xo'sh, hozir u TryAuthenticate-ga foydalanuvchi nomi va parol sifatida keladi. Men nima qilyapman, agar u foydalanuvchi autentifikatsiyasini amalga oshirmasa, men asosiy autentifikatsiyani tekshiraman. Men buni qilmaslikni afzal ko'raman. - person Amit Jindal; 03.11.2012