Pytanie Co to jest parametr Zasób w specyfikacji dzierżawy aplikacji Windows Azure AD oAuth 2.0


Próbuję wywołać proces uwierzytelniania z aplikacji dzierżawy systemu Windows Azure AD przy użyciu oAuth 2.0 za pomocą curl. Ale nie mogłem dowiedzieć się, jaki jest parametr "zasób" w poniższym przykładowym kodzie:

curl -X POST https://login.windows.net/<<YOUR--AD-TENANT-ID>>/oauth2/token  \
  -F redirect_uri=http://google.com \
  -F grant_type=authorization_code \
  **-F resource=https://management.core.windows.net/ \**
  -F client_id=87a544fd-... \
  -F code=AwABAAAAvPM1...8sSAA

14
2018-05-28 21:06


pochodzenie




Odpowiedzi:


Parametr zasobów przedstawia identyfikator WebAPI, do którego klient chce uzyskać dostęp w imieniu użytkownika. Większość przepływów w OAuth obejmuje 4 strony, właściciela zasobów (alias użytkownika), klienta (alias app), uprawnienia (znany również jako dostawca tożsamości) i zasób (znany również jako webapi). Widownia tokenu dostępu, który generuje organ, jest identyfikatorem zasobu.

W przypadku usługi Azure AD można użyć identyfikatora klienta lub identyfikatora URI identyfikatora aplikacji interfejsu WebAPI zasobów (znaleźć je na karcie konfiguracji aplikacji Azure AD w portalu Azure Management). Na przykład, jeśli chcę, aby mój klient otrzymał token, aby uzyskać dostęp do interfejsu API usług Azure AD Graph w imieniu użytkownika, poprosiłbym o token dla zasobu "https://graph.windows.netW twoim przykładzie wartość parametru zasobów identyfikuje interfejsy API usługi Azure Service Management.

Oto kilka przykładów kodu aplikacji klienckich korzystających z pakietów SDK Azure AD, by poprosić o tokeny do interfejsu WebAPI - różne zastosowania parametru zasobów:

Mam nadzieję że to pomoże.


18
2018-05-30 00:17



qq Dushyant - czy można poprosić o token dla wielu zasobów w jednym wywołaniu? - Mark Nadig
Zaznacz, jeśli przez jedno żądanie rozumiesz jedną prośbę o autoryzację - to tak. Żądanie autoryzacji uwierzytelni użytkownika (i jeśli będzie to wymagane, będzie mieć zgodę użytkownika, aby twoja aplikacja uzyskała dostęp do ich zasobów w ich imieniu) i dostarczy ci kod autoryzacyjny. - Dushyant Gill
Wtedy twoja aplikacja wyśle ​​żądanie do tokena, aby uzyskać token dostępu dla pierwszego zasobu - wyślesz kod (i identyfikator klienta / klienta) i odzyskasz token dostępu oraz token odświeżania. Wtedy twoja aplikacja ponownie wykona połączenie z tokenem, tj. Dla tokena dostępu do drugiego zasobu, jednak tym razem wyślemy token odświeżania (i twoje kredyty klienta / klienta). - Dushyant Gill
FYI, musiałem umieścić "graph.microsoft.com "; zamiast "graph.windows.net "; jako zasób (z Node.js + pakiet "passport-azure-ad-oauth" zamiast bezpośrednich wywołań HTTP z curl, ale logika wygląda tak samo); w przeciwnym razie zawsze otrzymałem komunikat "Błąd sprawdzania poprawności tokenu dostępu 401" podczas próby wywołania interfejsu API wykresu po procesie uwierzytelniania. - Frosty Z


W prostych słowach parametr zasobów zawiera identyfikator URI zasobu Web API, do którego chcesz uzyskać dostęp.

Protokół OAuth następuje po dostępie do zasobów w oparciu o token. Parametr "zasób" pomaga odróżnić tokeny dla różnych WEB API.

Na przykład, jeśli chcesz uzyskać dostęp do interfejsu GRAPH API, to zasób będzie ...https://graph.windows.net/"

Jeśli chcesz uzyskać dostęp do AZURE, parametr resource musi być określony jako ""http://management.azure.com".

Zaleca się używanie tego parametru, chociaż nie jest to obowiązkowe.


5
2018-02-25 11:15