В мобильном приложении 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 для веб-интерфейса? Если да, то как токен доступа обменивается на куки или делает это?
Даниэль Флипперс, вы заставили это работать? «Вопрос в том, как использовать этот токен доступа для доступа к веб-интерфейсу? Можно ли его обменять на файл cookie SharePoint Web UI (FedAuth?), Чтобы WebView, размещенный в приложении, мог показывать веб-страницу SharePoint аутентифицированному пользователю без пользователь должен снова войти в систему? " – lanakin
@Ianakin, в нашем случае веб-интерфейс и веб-API оказались в том же файле cookie из-за того, как был разработан Ionic, поэтому мы могли показывать интерфейс и одновременно обращаться к API, не используя OAuth. –