2016-01-04 4 views
0

Мне нужно получить доступ к веб-API, который защищен через Azure Active Directory. Я следовал этой документации https://msdn.microsoft.com/sv-se/library/azure/dn645542.aspxОшибка доступа к защищенному ресурсу Azure Active Directory

Первые шаги были успешными, но в конце я не могу получить доступ к требуемому ресурсу.

Что я сделал:

Сначала я называю эту ссылку

https://login.microsoftonline.com/mytenantname.onmicrosoft.com/oauth2/authorize?response_type=code&client_id=3eec...32e5 

и попадаю к авторизации портала.

После успешной регистрации извлечь код из перенаправлены URL, который является чем-то вроде этого

https://localhost:8080/?code=AAABAAAAiL9Kn2Z27........RdzFpearqiAA 

Затем я использую этот код, чтобы получить маркер доступа. Первая проблема здесь. Согласно документации (ссылка выше) ресурс является необязательным. Но это не работает, если я опускаю ресурс (error = Идентификатор ресурса не указан.), Поэтому я должен его предоставить. Во-вторых, если я поместил URI идентификатора APP моего приложения, зарегистрированного в Azure AD, в параметр регресса, я получил еще одну ошибку (клиент «3eec ... 32e5» и ресурс «myapp.azurewebsites.net» идентифицируют одно и то же приложение.) , Поэтому я поместил параметр resource.windows.net для параметра ресурса.

curl -s -X POST https://login.microsoftonline.com/akeliusdev.onmicrosoft.com/oauth2/token 
-d grant_type=authorization_code -d client_id=3eec...32e5 
-d client_secret=F%2BfpjpR............Wi8%3D 
-d code=AAABAAAAiL9Kn2Z27........RdzFpearqiAA -d resource=https://graph.windows.net 

Таким образом, я мог бы получить токен доступа. Но тогда я не могу получить доступ к ресурсу с помощью токена доступа. Я сделал это следующим образом:

curl https://myapp.azurewebsites.net/data 
--header "Authorization:eyJ0eXAiOiJKV1QiLCJhbGciOiJ.............4WYr6xn" 

Может кто-нибудь помочь мне по этому вопросу?

Спасибо.

ответ

0

Чтобы сделать это в качестве услуги для вызова службы, без взаимодействия с пользователем, вы можете следить за Service to Service Calls Using Client Credentials

Вам нужно создать приложение AAD и учетные данные. т.е. Принципа обслуживания.

затем, чтобы получить маркер доступа вы вызываете POST к

https://login.windows.net/<tenant ID>/oauth2/token

со следующими данными

grant_type=client_credentials&client_id=$username&client_secret=$password&resource=$resource

Где $ имя пользователя является ваш HTTP://localhost/whatever идентификатор

$ пароль - ваш основной пароль службы

$ ресурс https://management.core.windows.net/ (это может быть график, попробовать и посмотреть)

Маркер доступа будет в ответ JSON, как «access_token»

Вы затем добавить заголовок из Authorization: Bearer $AccessToken и надеемся, что вы должен получить доступ!

+0

На самом деле это решение не то, что я ищу. Мне нужно, чтобы пользователи могли входить в систему со своим собственным именем пользователя/pwd. –

+0

@ArashTaheri Приношу свои извинения, кажется, я неправильно понял/пошел глупо! - Я исправлю ответ, чтобы заявить, что это сервис для обслуживания, если кому-то еще это понадобится в будущем. –

+0

В любом случае я ценю ваше обязательство :) –

Смежные вопросы