argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: Focus API?  (Прочетена 3026 пъти)

ivan92ivanov

  • Неактивен Неактивен
  • Публикации: 62
  • is.gd/medbio
    • Медицинска биология
Focus API?
« -: 14.08.2012, 02:54:49 »

Здравейте!
Искам да разработя програма (на Visual Basic) която да бъде само за студенти на ПУ, и за това ме интересува ситемата Фокус разполага ли с API което да връща поне true/false резултат когато се изпрати заявка с името и паролата, за да знае програмата че този човек действително е студент в ПУ?
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re:Focus API?
« Отговор #1 -: 14.08.2012, 13:55:01 »

Пишете Лично съобщение на Емил Дойчев.
Активен

Емил Дойчев

  • Неактивен Неактивен
  • Публикации: 278
Re:Focus API?
« Отговор #2 -: 15.08.2012, 00:30:19 »

ivan92ivanov ми писа лично съобщение, но ще му отговоря тук защото отговора може да е полезен на някой друг в бъдеще.

Focus оторизира редица приложения. Пълният им списък е тук: https://projects.uni-plovdiv.net/projects/services/wiki

Съществуват два подхода за оторизация:

1. Чрез директна заявка към Focus базата данни. Този подход не се препоръчва и се допуска само за приложения, при които не може да се реализира следващият вариант.

2. Чрез LDAP, което отговаря директно на поставения въпрос. Това е повече от API и предоставя много възможности.

Тук https://projects.uni-plovdiv.net/projects/focus2/wiki/FocusAuth може да се види инфраструктурата изградена около Focus. Съществена част от нея е LDAP сървъра, който се синхронизира в реално време с Focus DB. Този LDAP сървър може да се използва за bind заявки, с които да се извършва проверка за валидна комбинация username/password.

Чрез задаване на подходящ филтър може да се ограничи bind-a до определени стойности на поддържаните в LDAP профила атрибути (например до акаунтите, които са от даден факултет, специалност, курс или дори подгрупа). Тук https://projects.uni-plovdiv.net/projects/focus2/wiki/Focus_LDAP може да се види описание на профила, който се поддържа от Focus LDAP сървъра и атрибутите му.

При интерес мога да съдействам за определяне на правилният формат на bind заявките и филтрите.
Активен

ivan92ivanov

  • Неактивен Неактивен
  • Публикации: 62
  • is.gd/medbio
    • Медицинска биология
Re:Focus API?
« Отговор #3 -: 17.08.2012, 00:35:29 »

Благодаря за информацията! За съжаление обаче аз съм нов във Visual Basic и нямам представа как да изпратя данни на сървър и да обработя получените. Ще съм благодарен ако споделите функционалния код за логин форма с две textbox полета (за име и парола) и превръщането на получените данни в низов формат за по-лесна обработка примерно: dim name as String
name=[server data]
label1.text="Здравей, " + name
Аз ще се разходя до народната библиотека да проверя там, но преди това търсех в интернет как се осъществява вързка с LDAP сървър чрез VB, но никъде не намерих нищо като информация, така че не знам дали в библиотеката ще намеря нещо. Програмата която разработвам няма да е единствена, така че подобен Login екран ще е огромна помощ и за следващите проекти. Благодаря предварително :)
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re:Focus API?
« Отговор #4 -: 17.08.2012, 09:20:22 »

Кажете все пак коя версия на VB ползвате.

Най-простото търсене в Гугъл с LDAP VB ключови думи, връща огромен брой резултати, повечето точно за валидиране на потребители. Например http://www.codeproject.com/Questions/337003/User-validation-in-LDAP-with-VB е 7-то подред.
Активен

ivan92ivanov

  • Неактивен Неактивен
  • Публикации: 62
  • is.gd/medbio
    • Медицинска биология
Re:Focus API?
« Отговор #5 -: 17.08.2012, 13:35:49 »

Първо много благодаря за линка (оказа се че е по-добре да търсиш с по-малко думички :D ). Версията която използвам е Visual Studio 2010.
Открих един код който ми се видя доста обещаващ, но в него се изисква LDAP домейн, а никъде не намерих домейна на LDAP сървъра на страничката с параметрите
Imports System
Imports System.Net
Imports System.DirectoryServices
 

Module Module1
    Sub Main(ByVal args() As String)
 

        Dim entry As DirectoryEntry = New DirectoryEntry("LDAP://mydomain.com", "username", "password")
        Dim searcher As DirectorySearcher = New DirectorySearcher("(&(mailnickname=*)(objectCategory=person))")
 

        searcher.SearchRoot = entry
        searcher.SearchScope = SearchScope.Subtree
 

        For Each result As System.DirectoryServices.SearchResult In searcher.FindAll()
            Dim properties As ResultPropertyCollection = result.Properties
 

            Dim name As ResultPropertyValueCollection = properties("name")
            Dim proxyAddresses As ResultPropertyValueCollection = properties("proxyAddresses")
            Dim legacyExchangeDN As ResultPropertyValueCollection = properties("legacyExchangeDN")
 

            Dim i As Integer
            For i = 0 To proxyAddresses.Count - 1
                Dim address As String = proxyAddresses(i).ToString()
 

                If (address.StartsWith("SMTP:")) Then
                    Console.WriteLine("Username = " + name(0))
                    Console.WriteLine("Email = " + address)
                    Console.WriteLine("LegacyExchangeDN = " + legacyExchangeDN(0))
                End If
            Next
        Next
 

        Console.Read()
 

    End Sub
End Module
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re:Focus API?
« Отговор #6 -: 18.08.2012, 11:26:58 »

Емил Дойчев ще Ви каже параметрите.
Активен

Атанас Терзийски

  • Администратор
  • *****
  • Неактивен Неактивен
  • Публикации: 2927
  • 0x04559912
    • atanas.uni-plovdiv.net
Re:Focus API?
« Отговор #7 -: 18.08.2012, 21:43:37 »

Иване,
Вероятно твоите потребители ще трябва да се оторизират с Фокус user/pass преди да достъпят системата ти. Това технически може да стане чрез LDAP (MySQL го изключвам като вариант), както Емо ти е писал. В този случай обаче има нещо, което ме притеснява или все още е неясно:
1) Каква гаранция би могъл да дадеш ако получиш евентуалния LDAP достъп до Фокус базата?
2) Ако потребителите се логват при теб, то би било добре да ги увериш, че си "надежден", т.е. няма да злоупотребияваш с техните user/pass, както и ще криптираш сесията?

Например за да избегнем (1) от по-горе аз бих ти предложил трети вариант (към двата, които Емо ти написа) - ползване на Radius Server. В този случай ще имаш малко или много това, което ти искаш: ще получаваш "да" или "не" ако комбинацията user/pass е валидна или невалидна съответно. Това се използва в eduroam и е достатъчно скалируемо и неангажиращо. Аз като че ли клоня към този вариант най-много, освен ако не напишеш малко повече инфо по въпросите от по-горе.
Активен

ivan92ivanov

  • Неактивен Неактивен
  • Публикации: 62
  • is.gd/medbio
    • Медицинска биология
Re:Focus API?
« Отговор #8 -: 18.08.2012, 23:56:08 »

Значи аз не разбирам особено от програмиране (любител съм) и не бих могъл да дам някаква сигурна гаранция освен може би да отворя публично кода на програмата... Имайте предвид все пак че не се занимавам с информатика и компютърни системи, и не съм на ясно с криптиране и други такива неща. Точно за помолих ако някой може да ми помогне с кода за login екрана.

Пак казвам целта не е вадене на данни а просто даден потребител да се идентифицира като студент на ПУ , понеже разработваната програма съдържа текст и изображения с авторско право, и автора им (не съм аз) държи да не се разпространяват свободно. Изчел съм две дебели книги за Visual Basic но никъде няма толкова сложни неща като криптиране, осъществяване на връзка с LDAP сървър, получаване и обработване на данни. Нямам нужда да разбирам от тези неща, на мен просто ми трябва една проста форма (form) написана с Visual Basic от която да копирам кода в формата на програмата и по-нататък програмата да си върви по предназначение. Ще съм много признателен ако някой разбиращ удари едно рамо.

П.П. Целта е програмата след като бъде завършена да се качи на CD и да върви като мултимедийно приложение към ръководствата, така че ако държите нямам против да ви изпратя кода на финалната версия преди да бъде пусната, за да се убедите че не събира или изпраща лични данни/пароли  :-)
Активен

Атанас Терзийски

  • Администратор
  • *****
  • Неактивен Неактивен
  • Публикации: 2927
  • 0x04559912
    • atanas.uni-plovdiv.net
Re:Focus API?
« Отговор #9 -: 19.08.2012, 08:49:34 »

Аха... ако въпросната програма се разпространява на CD, а не е онлайн достъпна няма ли да си предоставите всичките неща без оторизация така или иначе? Ако е online-CD тогава другите неща ще се усложнят. Аз си мислих, че всички ресурси ще са онлайн и достъпни след логване.
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re:Focus API?
« Отговор #10 -: 19.08.2012, 10:21:25 »

Сега ми се изясни, сложна хава е. Щом е на CD, би трябвало да може да се ползва и без Интернет. Иначе би трябвало и по-удобно е, да е на сайт - ще могат да се обновяват и коригират материалите при нужда лесно.

Отсега мога да позная как ще има в общият мейл/група на студентите комплектче потребител/парола, както и ISO на CD-то. Оттук следва и да следиш логините по айпита и честота на влизане и отива в киреча (става сложно).

Втори проблем е, че не всички студенти са активирали ФОКУС регистрацията си - трябва при негативен логин (върне ти че няма такъв), да го препращаш да се регистрира и прочие усложнения.

Помислете с автора за някакво друго разрешение, ама то друго не виждам.

Освен, често ползваха едно време при CD-та към учебници - при стартиране да иска дума или пасаж на дадена страница от учебника, т.е. доказателство, че си купил учебника и е пред теб - решава се с ксерокопие или сканиране на PDF. Скоро такова ми искаше сайта на един учебник по английски, за да мога да си сваля МР3-ки със звуковите уроци към учебника.

Да не говорим, че програми на VB се кракват доста лесно, поне преди беше така. На VB.NET не знам, но едва ли е по-различно. Хакер променя ЕХЕ-то да ти връща винаги верно за паролата или да прескача изобщо логин диалога.
« Последна редакция: 19.08.2012, 10:26:31 от Светослав Енков »
Активен

ivan92ivanov

  • Неактивен Неактивен
  • Публикации: 62
  • is.gd/medbio
    • Медицинска биология
Re:Focus API?
« Отговор #11 -: 19.08.2012, 13:30:37 »

 :-D Винаги има начин да пробиеш всяка защита, но аз не правя програма за военните. Много ми хареса идеята при стартиране на програмата да пита нещо от ръководството. Ще я предложа като вариант на автора :) Щом е толкова сложно (и не толкова сигурно) с фокус регистрация, тогава махам това като вариант, но съм изключително благодарен за помощта ви  :bow:
Активен

Светослав Енков

  • Неактивен Неактивен
  • Публикации: 1864
    • Shark's Home Page
Re:Focus API?
« Отговор #12 -: 20.08.2012, 09:42:06 »

Ами то с ФОКУС регистрацията не е сложно, и си е сигурно, ама възникват описаните проблеми със съхранението и използването на паролата по твоят начин. Ако има начин с web service да показваш логин екрана във веб браузър контролата и да получиш после отговора, е по-сигурно - защото паролата ще се покава и пази извън теб. Но пак остава проблема с временна липса на Интернет.
Активен

Емил Дойчев

  • Неактивен Неактивен
  • Публикации: 278
Re:Focus API?
« Отговор #13 -: 23.08.2012, 21:22:10 »

Извинявам се за забавянето с отговора, но сезонът е такъв.

LDAP заявката не представлява проблем за сигурността. Както казах по-горе прави се прост bind с username и password като резултата е "да" или "не".

Извличането на допълнителна информация от LDAP сървъра е една друга история, за която ще е необходимо известно дискутиране за да се изчистят споменатите от Наско притеснения.

Но за обикновена проверка на валидността на акаунт няма никакви проблеми.

Видях, че идеята има развитие в друга посока, но ако се върнете към варианта с Focus оторизация ще предоставя необходимите параметри за връзка с LDAP сървъра и формата на параметрите на bind заявката.

Това с което не мога да помогна е с имплементацията с Visual Basic. Никога не съм писал на това нещо.
Активен