HSEAuth-iOS является клиентской реализацией стандарта OpenID Connect/OAuth 2.0 для iOS. Библиотека позволяет взаимодействовать с OAuth провайдером на базе службы федерации Active Directory, а так же реализует функции мультиаккаунтности, бесшовного входа (SSO) и взаимодействие с API систем Высшей школы экономики с использованием единых авторизационных ключей.
Подробнее про OpenID Connect/OAuth 2.0: https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/development/ad-fs-openid-connect-oauth-concepts
Для взаимодействия с авторизационным сервером (auth.hse.ru) подтребуются уникальные client_id и redirect_uri. Для их получения напишите нам на apps@hse.ru письмо с названием проекта, его кратким описанием и составом команды разработки.
- В проекте следует добавить в Info.plist
XML
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>None</string>
<key>CFBundleURLName</key>
<string>auth0</string>
<key>CFBundleURLSchemes</key>
<array>
<string>ru.hse.pf</string>
</array>
</dict>
</array>
- Для использования необходимо получить client id и передать его при создании модели
Swift
let model: AuthManagerProtocol = AuthModel(
with: <CLIENT_ID>,
redirectScheme: "ru.hse.pf",
host: "auth.hse.ru",
reditectPath: "/adfs/oauth2/ios/ru.hse.pf/callback"
)
if let context = UIApplication.shared.keyWindow {
model.authManager = AuthManager(with: context)
}
DispatchQueue.global(qos: .utility).async {
let result = self.model.auth()
DispatchQueue.main.async {
switch result {
case let .success(data):
print(data)
case let .failure(error):
print(error)
}
}
}
Copyright 2020 National Research University Higher School of Economics
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.