AppleAuth는 Apple로 로그인하기 위해 Apple의 REST API와 통신하기 위한 논리를 캡슐화하는 매우 간단한 .NET용 라이브러리입니다. 주요 목표는 모든 웹 애플리케이션에서 Apple로 로그인을 더 쉽게 구현하는 것입니다.
패키지를 설치하려면 패키지 관리자 콘솔에서 다음 명령을 실행하세요.
PM > Install - Package AppleAuth . NET
또는 Nuget 패키지 관리자를 사용하여 패키지를 설치하면 됩니다. 프로젝트는 여기에서 찾을 수 있습니다: NuGet에 대한 링크
Apple로 로그인을 사용하려면 Apple 개발자 프로그램에 등록해야 합니다. 프로그램에 등록한 후 개발자 계정 도움말로 이동하여 앱 기능 구성 > Apple로 로그인으로 이동하세요. 여기에서 앱에 대해 Apple로 로그인을 구성하기 위한 정보를 찾을 수 있습니다.
Apple로 로그인을 구현하는 개발자 계정 설정에 대한 자세한 내용은 내 블로그 게시물을 확인하세요.
다음으로, Apple로 로그인을 위해 웹 페이지를 구성해야 합니다. 공식 문서의 지침을 따르세요. 이 링크를 참조하여 버튼 스타일을 설정하는 방법을 확인할 수도 있습니다.
Azure 웹앱에 앱을 배포하는 경우 WEBSITE_LOAD_USER_PROFILE = 1
설정을 추가해야 합니다. 그러면 IIS가 사용자 계정 저장소 아래의 개인 키 저장소에 액세스할 수 있습니다. Azure Portal의 구성 > 애플리케이션 설정에서 이를 적용하거나 Cloud Shell에서 다음 명령을 실행할 수 있습니다.
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
.
이 설정은 비공유 가격 책정 계층에만 사용할 수 있다는 점도 중요합니다.
Microsoft IIS를 실행하는 자체 웹 서버에 앱을 배포하는 경우 응용 프로그램 풀의 "고급 설정"에서 "사용자 프로필 로드"를 활성화해야 합니다. 그렇지 않으면 "시스템이 지정된 파일을 찾을 수 없습니다"라는 CryptographicException이 발생합니다.
AppleAuthProvider.cs
사용 AppleAuthProvider
의 새 인스턴스를 생성하고 필수 매개변수를 전달하면 준비가 완료됩니다. Apple에서 인증 토큰을 받으려면 GetAuthorizationToken
메서드를 사용하세요. GetRefreshToken
메서드를 사용하여 사용자가 여전히 'Apple로 로그인'을 사용하여 시스템에 로그인하고 있는지 확인하세요. GetButtonHref
메서드를 사용하여 'Apple로 로그인' 버튼에 대한 쿼리 문자열을 가져옵니다.
사용자가 페이지에서 "Apple로 로그인" 버튼을 클릭하면 https://appleid.apple.com/으로 리디렉션됩니다. 자격 증명을 제공한 후 Apple은 리디렉션 URL로 지정한 URL에 POST 요청을 보냅니다. InitialTokenResponse.cs
사용하여 요청을 처리할 수 있습니다. 인증 토큰을 검색하려면 먼저 필수 매개변수를 사용하여 AppleAuthProvider
의 새 인스턴스를 생성해야 합니다. 그 후에는 InitialTokenResponse
개체와 개인 키의 code
전달하는 GetAuthorizationToken() 메서드를 호출하면 됩니다. 다음은 C#으로 구현한 샘플입니다.
[ HttpPost ]
public async Task HandleResponseFromApple ( AppleAuth . TokenObjects . InitialTokenResponse response )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuth . AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "MyRedirectUrl" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken authorizationToken = await provider . GetAuthorizationToken ( response . code , privateKey ) ;
}
Apple에서 반환된 토큰은 수명이 짧으므로 반환된 AppleAuth.TokenObjects.AuthorizationToken
개체를 사용하여 시스템에 세션이나 사용자를 만들어야 합니다. 그런 다음 GetRefreshToken
메서드를 사용하여 새로 고침 토큰을 검색하여 "Apple로 로그인"을 사용하여 사용자가 여전히 로그인되어 있는지 확인할 수 있습니다.
[ HttpPost ]
public async Task < bool > IsUserUsingAppleID ( )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "https://myredirecturl.com/HandleResponseFromApple" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken refreshToken = await provider . GetRefreshToken ( authorizationToken . RefreshToken , privateKey ) ;
return refreshToken != null ;
}
프로젝트에 기여하고 더 나은 결과를 얻으실 수 있다면 더욱 환영입니다. 기여할 때 엄격하게 전문적이고 정중하며 우호적인 태도를 유지하도록 노력하십시오. 또한 이슈나 다른 방법을 통해 수행하려는 변경 사항을 이 저장소의 소유자에게 전달했는지 확인하세요.
끌어오기 요청 생성에 대한 엄격한 지침은 없지만 일반적인 지침에는 이미 알려진 GitHub 흐름을 사용할 수 있습니다.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE.md를 참조하세요.