2017-02-09 27 views
0

В мобильном приложении Ionic нам необходимо получить доступ к веб-API и, чтобы показать веб-интерфейс (оба SharePoint) в Ionic WebView (по существу, браузер внутри приложения). Мы используем OnPrem ADFS на Windows Server 2012 и SharePoint 2013. OnPrem Вот что мы делаем:Аутентификация веб-интерфейса с использованием токена доступа OAuth2 от ADFS

1. В ADFS3, Setup OAuth2 и добавить проверяющей стороны траста и клиента

http://www.gi-architects.co.uk/2016/04/setup-oauth2-on-adfs-3-0/

2. с помощью мобильного приложения, вызовите ADFS, чтобы получить OAuth маркер доступа

Во-первых, адресности:

https://myadfsdomain/adfs/oauth/authorize 
    ?response_type=code 
    &client_id=MYCLIENTID 
    &redirect_uri=https://myserver/callback 
    &resource=MYRelyingPartyId 

затем проводкой responseCode Eg:

$http({method: "post", 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
    url: "https://myadfsdomain/adfs/oauth2/token", 
    data: "client_id=MYCLIENTID&code=" + responseCode + "&redirect_uri=https://myserver/callback&grant_type=authorization_code" }) 

Смотрите также http://blog.scottlogic.com/2015/03/09/OAUTH2-Authentication-with-ADFS-3.0.html

Теперь у нас есть OAuth2 маркер доступа.

3. Используйте этот маркер для вызова SharePoint API

GET /the-api-method 
Host: example.com 
Authorization: Bearer <access_token> 

Вопрос

Вопрос в том, как это может быть маркер доступа используется для доступа к веб-интерфейс? Можно ли обменять его на файл cookie SharePoint Web UI (FedAuth?), чтобы WebView, размещенный в приложении, мог показать веб-страницу SharePoint аутентифицированному пользователю без повторного входа в систему?

Согласно this post, это похоже на то, что OAuth2 для ADFS3 (Windows Server 2012) работает только при вызове веб-API, а не при вызове веб-интерфейса. Это верно?

Как ADFS на Windows Server 2016 now supports more OAuth2 grant types, можно ли использовать ADFS OAuth на сервере 2016 для веб-интерфейса? Если да, то как токен доступа обменивается на куки или делает это?

+0

Даниэль Флипперс, вы заставили это работать? «Вопрос в том, как использовать этот токен доступа для доступа к веб-интерфейсу? Можно ли его обменять на файл cookie SharePoint Web UI (FedAuth?), Чтобы WebView, размещенный в приложении, мог показывать веб-страницу SharePoint аутентифицированному пользователю без пользователь должен снова войти в систему? " – lanakin

+0

@Ianakin, в нашем случае веб-интерфейс и веб-API оказались в том же файле cookie из-за того, как был разработан Ionic, поэтому мы могли показывать интерфейс и одновременно обращаться к API, не используя OAuth. –

ответ

0

Да - ADFS 3.0 обрабатывает только разрешающий код для конфиденциальных клиентов, т. Е. Веб-API.

В ADFS 4.0 у вас есть поддержка OpenID Connect. Это открывает сценарий веб-сайта. Это дает вам токен, который затем можно использовать для доступа к веб-API.

Посмотрите на Calling a web API in a web app using Azure AD and OpenID Connect. Это использует Azure AD, но принцип тот же.

+0

Хорошо, так это будет работать и с ADFS 4 на предварительном этапе? –

+0

Действительно. http://nzpcmad.blogspot.co.nz/2016/03/adfs-webapp-and-web-api-on-server-2016.html – nzpcmad

+0

Пример делает что-то отличное от моего сценария - AFAICT, веб-приложение в примере аутентифицируется в AD с использованием OAuth и OpenID от веб-сервера, а затем выдавать его собственные файлы cookie обычным способом. В моем случае аутентификация выполняется в мобильном приложении, и тогда мне нужно будет передать access_token на веб-сервер, чтобы получить файлы cookie. Исследование OWIN, чтобы узнать, помогает ли это с этим ... –

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

  • Нет связанных вопросов^_^