- How to configure Sign In with Apple
- Внедряем Sign in with Apple — систему авторизации от Apple
- Настраиваем Apple Developer Account
- Добавляем кнопку Sign In with Apple в iOS-приложение
- Реализуем Sign in with Apple для web и Android
- Получение данных
- Secret Neighbor 9+
- A Horror Social Multiplayer
- tinyBuild LLC
- Для iPad
- Снимки экрана
- Описание
How to configure Sign In with Apple
One of the interesting things Apple rolled out at their WWDC19 conference was “Sign In with Apple”. Which is an authentication service provided by Apple where developers can allow users to sign into their applications with an Apple Id.
Going through the Apple official docs and configuring this seems to be a tedious task atm. So here I will quickly guide you through the basic setup 🙂
Log in to your Apple developer account.
We will need to obtain an App Id with “Sign In with Apple” capabilities.
- Go to Certificates, Identifiers & Profiles > Identifiers and click on the + sign in the upper left next to “Identifiers”.
- Select App IDs and hit continue.
- Here enter any Description and a Bundle ID (Apple recommends using a reverse-domain name style string ex: com.domainname.appname). Scroll down the Capabilities and make sure to tick on Sign In with Apple. And finally, click continue and in the next page verify the details and click Register.
Now we need to obtain a Services Id. This will also serve as the cliend_id when you will be making API calls to authenticate the user.
- Again go to Certificates, Identifiers & Profiles > Identifiers and click on the + sign in the upper left next to “Identifiers”.
- This time select Services IDs and hit continue.
- Here enter any Description and an Identifier (Apple recommends using a reverse-domain name style string ex: com.domainname.appname). Make sure to tick on Sign In with Apple. Here you will have to click on the Configure button next to “Sign In with Apple”.
- Clicking the Configure button from the previous step will display a screen with Web Authentication Configuration. Make sure the App ID we obtained previously is selected as the Primary App ID. Next, you will have to add the Web Domain you will be using this service in (however I did not have to verify the domain to try out Sign In with Apple, but its best if you can get this done). I used example-app.com. Finally, add the Return URLs (you can add multiple) which will be the valid URLs to redirect the user after the user authenticates with Sign In with Apple (for quick testing purposes I used https://example-app.com/redirect). Click Save.
- Click on Continue and in the next page verify the details and click Register.
Now we need to create a secret key that will be used to get our client_secret which will also be needed to make a token request from the Apple.
- Go to Certificates, Identifiers & Profiles > Keys and click on the + sign in the upper left next to “Keys”.
- Give a Key Name and make sure to tick Sign In with Apple. Here also we will have to click on Configure. And in the screen that appears next(Configure Key) select the same App Id we used previously under Choose a Primary App ID and click Save.
- Click on Continue and in the next page verify the details and click Register.
- Download the key and keep it in a safe place as you will never be able to download it again. Click on Done after downloading the key.
Well, that’s pretty much it with configurations.
We already have our client_id now we need one more thing to call the API; the client_secret which we will create using the private key we just downloaded.
The client secret has to be a JWT and according to Apple docs, we need to encrypt the token using the Elliptic Curve Digital Signature Algorithm (ECDSA) with the P-256 curve and the SHA-256 hash algorithm. One of the easy ways to get this done is using ruby-jwt. Firstly check whether you already have Ruby setup if not you can get it from here.
Below are the details we will need to include in the JWT.
Let’s get the client_secret.
After setting up Ruby run the command sudo gem install jwt this will setup ruby-jwt.
Add the necessary details and save the following as secret_gen.rb
You can run the secret_gen.rb file using the command ruby secret_gen.rb from the terminal and it will give you the client_secret.
Okay… Now we are ready to test Sign In with Apple 🙂
Add your redirect_uri(should be a Return URL we configured previously) and the client_id and paste this in your browser and hit enter.
You will be prompted to authenticate (I had to enable two-factor authentication for my Apple Id to continue). And in the end, you will be redirected to the redirect_uri and end up with a code.
Run the following cURL command in the terminal after replacing the code with the code you got performing the above, the redirect_uri and client_id as previously used and the client_secret obtained by running secret_gen.rb.
After running the above you should end up with an access token and an id token.
Some useful info like request details when using “Sign in with Apple” can be found in this document provided by apple.
If your wondering about the Sign In with Apple flow, it’s somewhat based on the OIDC Authorization Code flow.
Also, did you know that using WSO2 Identity Server you can add Sign In with Apple to your app in under 5mins with ZERO code? You can find how it’s done over here.
If your interested in learning more about “Sign In with Apple” join this free webinar on Apple Sign In: A Zero-Code Integration Approach Using WSO2 Identity Server.
Источник
Внедряем Sign in with Apple — систему авторизации от Apple
Этим летом на конференции WWDC 2019 Apple представила собственную систему авторизации Sign in with Apple и сделала ее обязательной для всех приложений в App Store, которые используют вход через соцсети. Исключение составляют образовательные, корпоративные, правительственные и бизнес-приложения, использующие собственную авторизацию. К Sign in with Apple Apple сделала качественную документацию, и в этой статье мы на примере ЦИАН расскажем, как внедрить ее в свой сервис.
Настраиваем Apple Developer Account
Работа по интеграции начинается с настройки аккаунта разработчика. Сначала нужно включить опцию Sign In with Apple для вашего App ID. Для этого заходим в список идентификаторов в Apple Developer Account, выбираем необходимый App ID и включаем для него опцию Sign In with Apple.
Теперь настраиваем Service ID — уникальный идентификатор web-приложения, который понадобится для обращения к Sign in with Apple API. Всего на один App ID можно создать до 5 Service ID. Для этого нажимаем кнопку создания идентификаторов, выбираем Service ID, заполняем необходимые поля и нажимаем Edit в поле Sign In With Apple. Откроется форма, где выбираем правильный Primary App ID, указываем веб-домен и перечислям URL для редиректа после успешного логина. Надо учитывать, что можно ввести только 10 Return URLs:
Для сохранения нажимаем Save, Continue и Register. Да, при любых изменениях конфигурации необходимо нажимать все три кнопки, иначе изменения не вступят в силу.
Теперь в списке Service ID выбираем созданный идентификатор и опять нажимаем Edit в поле Sign In With Apple. В открывшемся окне у поля с веб-адресом видим две новые кнопки:
Этот файл необходим, чтобы Apple верифицировала ваш ресурс. Скачиваем его и размещаем его на своем ресурсе. Сразу у нас этот финт не сработал: когда наши админы добавили файл, то по указанному url срабатывал редирект (302) на файл, лежащий в другом месте, и Apple его не верифицировал. Тогда пришлось размещать файл по прямому доступу по URL (200). После того как Apple успешно проверит файл, рядом с доменом загорится зеленая галочка:
Из раздела идентификаторов переходим в раздел Keys и создаем новый ключ. Для этого ставим галочку Sign In with Apple и нажимаем сначала Configure, чтобы проверить App ID, затем Continue:
На следующем экране обязательно скачиваем файл с ключом и сохраняем его в безопасном месте, так как после ухода с этого экрана ключ будет недоступен для скачивания. На этой же странице можно увидеть Key ID, который нам еще понадобится:
Для пользователей у Sign In with Apple есть бонус: она позволяет предоставить фейковый e-mail, на который можно писать только с доверенных адресов. В этом случае нужна дополнительная настройка. Открываем раздел More, нажимаем Configure в разделе Sign In with Apple и вписываем свой URL:
Добавляем кнопку Sign In with Apple в iOS-приложение
ЦИАН работает на трех платформах: iOS, Android, Web. Для iOS есть нативное SDK, поэтому авторизация будет выглядеть следующим образом:
Чтобы добавить в iOS-приложение Sign in with Apple, добавляем кнопку ASAuthorizationAppleIDButton и вешаем на нее обработчик нажатия:
Кроме ASAuthorizationAppleIDProvider, обратите внимание еще на ASAuthorizationPasswordProvider, который позволяет получать связки «логин-пароль» из Keychain.
Теперь мы реализуем ASAuthorizationControllerPresentationContextProviding:
Создаем делегат ASAuthorizationControllerDelegate, который сообщает об успехе или ошибке:
Полученный authorizationCode мы отправляем на сервер и ждем ответа от бэкенда об успешности авторизации в нашей системе.
Реализуем Sign in with Apple для web и Android
Внезапно, для Android и Web Apple не предоставляет SDK, поэтому в обоих случаях нужно открыть страницу авторизации от Apple и процесс будет иным:
URL для страницы авторизации выглядит следующим образом:
Рассмотрим его параметры:
- client_id — Service ID, который регистрировали выше.
- redirect_uri — URI, куда пользователь перенаправляется после успешной аутентификации через AppleID. Этот URI мы указывали выше при настройке Apple Developer.
- state — идентификатор сессии пользователя, который Apple вернет при вызове redirect_uri, чтобы мы могли проверить отправителя. Правило генерации этого параметра можете придумать самостоятельно, например, рандомную строку.
- scope — в этом параметре указывается, какая нужна информация от пользователя. Например, name, email или сразу оба, как в примере выше.
- response_type — этот параметр указывает, в каком виде нужен ответ. Он может быть code или id_token. Если выбрать id_token, то его нужно уточнить параметром response_mode, в котором можно указать query, fragment и form_post.
После успешной двухфакторной аутентификации через appleID Apple вызовет указанный redirect_uri и передаст параметры state и code:
В параметре code передается одноразовый код аутентификации пользователя, который действует в течение 5 минут. В параметре state — идентификатор сессии, отправленный при создании формы авторизации, а в параметре user — данные пользователя.
Получение данных
На всех клиентах, чтобы сохранить данные пользователя, нужно получить от Apple access_token. Для этого сначала запрашиваем authorization_code:
- в client_id указывается созданный для web-приложений ServiceID и AppID для iOS-приложения.
- code — мы получили выше после редиректа или передали с iOS-клиента
- в параметре grant_type передаем цель получения токена: авторизация (authorization_code) или продление токена (refresh_token)
- в параметре client_secret — JSON Web Tokens на основе секретного ключа, полученного при регистрации приложения.
Создать JSON Web Tokens можно на Python:
Если все прошло успешно, то в ответе придут такие параметры:
Ура, вот и access_token. Вместе с ним приходит refresh_token, которым можно обновить при необходимости access_token.
Информация о пользователе хранится в поле id_token, но его нужно декодировать:
Apple_public_key — это публичный ключ, который можно получить по ссылке.
После декодирования получаем:
Email передается только один раз, когда пользователь впервые авторизуется в вашем сервисе через Sign in with Apple. В следующий раз Apple передаст эти данные только в том случае, если пользователь самостоятельно отвяжет ваше приложение. Этим авторизация от Apple отличается от других сервисов, где данные можно получить через API, и мы не нашли информацию о том, что они планируют реализовать что-то подобное.
В этом ответе нам нужны параметры sub, который передается каждый раз, и email, поэтому мы сохраняем их у себя в системе и сообщаем клиенту о успешной авторизации. PROFIT.
Источник
Secret Neighbor 9+
A Horror Social Multiplayer
tinyBuild LLC
Для iPad
-
- Ролевые: № 73 в этой категории
-
- 4,0 • Оценок: 1,6 тыс.
-
- Бесплатно
- Включает встроенные покупки
Снимки экрана
Описание
*Поддерживаемые устройства: iPhone 8 Plus, Apple iPad Pro 12.9 (2015) и более новые версии. iPod Touches не поддерживается.
*Требуется стабильное интернет-соединение.
Secret Neighbor — это постоянно развивающаяся мультиплеерная командная игра в жанре хоррор. Действие разворачивается во вселенной Hello Neighbor. Скачай БЕСПЛАТНО и играй!
У твоей команды одна задача — рыскать по дому и собирать ключи, чтобы открыть дверь подвала. Но есть сложность: один из вас замаскирован под Соседа, хитрого предателя!
ИГРАЙ ЗА НЕЗВАНЫХ ГОСТЕЙ:
Кооперируйся с товарищами, держись с ними вместе или поодиночке, используй навыки и способности, твоя цель — открыть замки на двери подвала.
ИГРАЙ ЗА СОСЕДА:
Избавься посторонних! Используй маскировку, чтобы втереться к ним в доверие, расставь ловушки и поймай противных чужаков всех до одного! Убеди друзей, что другой игрок — это сосед, и приступай к охоте. Никто не должен узнать твою тайну!
Присоединяйтесь к SECRET Club! Эта возобновляемая подписка подарит вам дополнительные бонусы. Для доступа к игре не обязательно быть членом клуба.
Источник