2014-09-04 12 views
6

Potrzebuję stworzyć własnego dostawcę OAUTH, aby potwierdzić wnioski aplikacji innych firm, nie chcę korzystać z usług Google, Twittera, LinkedIn, dostawców Microsoft. Muszę utworzyć własnego dostawcę, aby uwierzytelnić żądanie i zwrócić token dostępu do klienta. Ale cała pomoc w sieci jest powiązana z zewnętrznymi dostawcami (Google, LinkedIn, Twitter, Facebook ..). Czy ktoś może mi pomóc w stworzeniu własnego dostawcy niestandardowego?Niestandardowy dostawca OAuth C#

+0

Przeszedłem na chwilę tę analizę i okazało się to złym pomysłem, ponieważ istnieją niekończące się kwestie bezpieczeństwa, o których należy pamiętać, i niekończące się aktualizacje, które wyprzedzają hakerów. Ostatecznie większość osób wybrała bezpłatny serwer ThinkTecture. Faceci, którzy za tym stoją, są poważnymi liderami w tej technologii. http://www.thinktecture.com/identityAndAccessControl – EvilDr

+0

Czy znasz specyfikację [OAuth 1] (http://tools.ietf.org/html/rfc5849) lub [OAuth 2] (http: //tools.ietf .org/html/rfc6749)? –

+0

Potrzebuję użyć OAUTH 2.0, zgodnie z wymogiem mojego klienta, aby osiągnąć to samo. – daisy

Odpowiedz

6

Roland powiedział, że jeśli przejdziesz przez specyfikację, będzie to całkiem proste.

Na wysokim poziomie jest to, co trzeba zrobić, aby wspierać wzór AUTHCODE Grant:

przyjmując: Aplikacja właścicielem użytkowników.

  • Wydaj klient/sekrety każdej aplikacji trzeciej.
  • Na serwerze utworzyć punkty końcowe dla
    • zezwolić
    • żeton

Gdy klient trafia w punkt końcowy autoryzacji jak poniżej:

/authorize?response_type=code&client_id=<clientID>&state=xyz&redirect_uri=http://thirdparty.com

  • Redi przekierować klienta do strony logowania.
  • Sprawdź poprawność nazwy użytkownika/pwd podanej przez użytkownika.
  • Po pomyślnym wywołaniu przekierowania URI klienta zewnętrznego należy użyć kodu authCode.
  • Jeśli wystąpi błąd, wywołaj klienta URI przekierowania z błędem (wcześniej opublikowany).

Próbka zwrotna tutaj https://thirdparty.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz

Klient następnie wezwać/tokena URI z AUTHCODE coś jak poniżej:

/token?grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=http://thirdparty.com 

Generowanie tokenu, przechowywać go przed ClientID, identyfikatora użytkownika i odpowiedzieć z tym tokenem. Coś poniżej

{ 
    "access_token":"2YotnFZFEjr1zCsicMWpAA", 
    "token_type":"example", 
    "expires_in":3600, 
    "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA", 
    "example_parameter":"example_value" 
} 

Kiedy 3rd dostępu stron Twoich usług/zasobów walidacji token przed klientem i login, a udzielić lub odmówić dostępu.

To jest początek, ale może być o wiele więcej dostosowań, które można wykonać za pomocą zakresu i innych wzorców OAuth2.

Powiązane problemy