Xamarin.iOS 앱에 인증 추가
개요
이 항목에서는 클라이언트 애플리케이션에서 App Service Mobile App의 사용자를 인증하는 방법을 보여 줍니다. 이 자습서에서는 App Service에서 지원하는 ID 공급자를 사용하여 Xamarin.iOS 빠른 시작 프로젝트에 인증을 추가합니다. 모바일 앱에서 인증 및 권한을 성공적으로 부여하면 사용자 ID 값이 표시되고 제한된 테이블 데이터에 액세스할 수 있습니다.
먼저 Xamarin.iOS 앱 만들기자습서를 완료해야 합니다. 다운로드한 빠른 시작 서버 프로젝트를 사용하지 않는 경우 프로젝트에 인증 확장 패키지를 추가해야 합니다. 서버 확장 패키지에 대한 자세한 내용은 Azure Mobile Apps용 .NET 백 엔드 서버 SDK작업을 참조하세요.
인증을 위해 앱 등록 및 App Services 구성
먼저 ID 공급자의 사이트에 앱을 등록한 다음 Mobile Apps 백 엔드에서 공급자 생성 자격 증명을 설정합니다.
공급자별 지침에 따라 기본 ID 공급자를 구성합니다.
앱에서 지원하려는 각 공급자에 대해 이전 단계를 반복합니다.
허용되는 외부 리디렉션 URL에 앱 추가
보안 인증을 사용하려면 앱에 대한 새 URL 체계를 정의해야 합니다. 이렇게 하면 인증 프로세스가 완료되면 인증 시스템이 앱으로 다시 리디렉션할 수 있습니다. 이 자습서에서는 url 체계 앱 이름 사용합니다. 그러나 선택한 URL 체계를 사용할 수 있습니다. 모바일 애플리케이션에 고유해야 합니다. 서버 쪽에서 리디렉션을 사용하도록 설정하려면 다음을 수행합니다.
Azure 포털에서 App Service를 선택하십시오.
인증/권한 부여 메뉴 옵션을 클릭합니다.
허용된 외부 리디렉션 URL에
url_scheme_of_your_app://easyauth.callback
를 입력합니다. 이 문자열에서의 url_scheme_of_your_app은 귀하의 모바일 애플리케이션을 위한 URL 체계입니다. 프로토콜에 대한 일반 URL 사양을 따라야 합니다(문자와 숫자만 사용하고 문자로 시작). 여러 위치에서 URL 체계를 사용하여 모바일 애플리케이션 코드를 조정해야 하므로 선택한 문자열을 기록해 두어야 합니다.확인을 클릭합니다.
저장을 클릭합니다.
인증된 사용자에 대한 권한 제한
기본적으로 Mobile Apps 백 엔드의 API는 익명으로 호출할 수 있습니다. 다음으로, 인증된 클라이언트에 대해서만 액세스를 제한해야 합니다.
Node.js 백 엔드(Azure 포털을 통해).
Mobile Apps 설정에서 간편한 테이블 클릭하고 테이블을 선택합니다. 권한 변경클릭하고 모든 권한에 대해 인증된 액세스만 선택한 다음 저장을 클릭합니다.
.NET 백 엔드(C#):
서버 프로젝트에서 컨트롤러로 이동한 후>TodoItemController.cs로 이동합니다. 다음과 같이
[Authorize]
특성을 TodoItemController 클래스에 추가합니다. 특정 메서드에 대한 액세스만 제한하려면 이 특성을 클래스 대신 해당 메서드에만 적용할 수도 있습니다. 서버 프로젝트를 다시 게시합니다.[Authorize] public class TodoItemController : TableController<TodoItem>
Node.js 백엔드(Node.js 코드를 통해).
테이블 액세스에 대한 인증을 요구하려면 Node.js 서버 스크립트에 다음 줄을 추가합니다.
table.access = 'authenticated';
자세한 내용은 방법:테이블에 액세스하려면 인증 필요를 참조하세요. 사이트에서 빠른 시작 코드 프로젝트를 다운로드하는 방법을 알아보려면 방법: Git사용하여 Node.js 백 엔드 빠른 시작 코드 프로젝트 다운로드를 참조하세요.
Visual Studio 또는 Xamarin Studio에서 디바이스 또는 에뮬레이터에서 클라이언트 프로젝트를 실행합니다. 앱이 시작된 후 상태 코드가 401(권한 없음)인 처리되지 않은 예외가 발생하는지 확인합니다. 오류가 디버거의 콘솔에 기록됩니다. 따라서 Visual Studio에서 출력 창에 오류가 표시됩니다.
이 무단 오류는 앱이 인증되지 않은 사용자로 모바일 앱 백 엔드에 액세스하려고 하기 때문에 발생합니다. 이제 TodoItem 테이블에 인증이 필요합니다.
다음으로, 인증된 사용자를 사용하여 모바일 앱 백 엔드에서 리소스를 요청하도록 클라이언트 앱을 업데이트합니다.
앱에 인증 추가
이 섹션에서는 데이터를 표시하기 전에 로그인 화면을 표시하도록 앱을 수정합니다. 앱이 시작되면 App Service에 연결되지 않으며 데이터가 표시되지 않습니다. 사용자가 새로 고침 제스처를 처음 수행하면 로그인 화면이 표시됩니다. 성공적으로 로그인하면 할 일 항목 목록이 표시됩니다.
클라이언트 프로젝트에서 파일 QSTodoService.cs를 열고 다음 using 문을 추가하고,
MobileServiceUser
에 접근자를 포함하여 QSTodoService 클래스에 추가하세요.using UIKit; // Logged in user private MobileServiceUser user; public MobileServiceUser User { get { return user; } }
QSTodoService에 Authenticate라는 새 메서드를 다음 정의와 함께 추가합니다.
public async Task Authenticate(UIViewController view) { try { AppDelegate.ResumeWithURL = url => url.Scheme == "{url_scheme_of_your_app}" && client.ResumeWithURL(url); user = await client.LoginAsync(view, MobileServiceAuthenticationProvider.Facebook, "{url_scheme_of_your_app}"); } catch (Exception ex) { Console.Error.WriteLine (@"ERROR - AUTHENTICATION FAILED {0}", ex.Message); } }
비고
Facebook 이외의 ID 공급자를 사용하는 경우 위의 LoginAsync 전달된 값을 MicrosoftAccount , Twitter , Google 또는 WindowsAzureActiveDirectory 중 하나로 변경합니다.
QSTodoListViewController.cs엽니다. 끝 부근에서 RefreshAsync() 대한 호출을 제거하는 ViewDidLoad 메서드 정의를 수정합니다.
public override async void ViewDidLoad () { base.ViewDidLoad (); todoService = QSTodoService.DefaultService; await todoService.InitializeStoreAsync(); RefreshControl.ValueChanged += async (sender, e) => { await RefreshAsync(); } // Comment out the call to RefreshAsync // await RefreshAsync(); }
User 속성이 null인 경우 인증하도록 RefreshAsync 메서드를 수정합니다. 메서드 정의의 맨 위에 다음 코드를 추가합니다.
// start of RefreshAsync method if (todoService.User == null) { await QSTodoService.DefaultService.Authenticate(this); if (todoService.User == null) { Console.WriteLine("couldn't login!!"); return; } } // rest of RefreshAsync method
AppDelegate.cs열고 다음 메서드를 추가합니다.
public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options) { if (client.ResumeWithURL(app, url, options)) return true; return base.OpenUrl(app, url, options); }
Info.plist 파일을 열고, 고급 섹션에서 URL 형식 로 이동하십시오. 이제 URL 형식의 식별자 및 URL 체계 구성하고 URL 형식 추가를 클릭합니다. URL 스킴이 {url_scheme_of_your_app}과 동일해야 합니다.
Mac 호스트 또는 Mac용 Visual Studio에 연결된 Visual Studio에서 디바이스 또는 에뮬레이터를 대상으로 하는 클라이언트 프로젝트를 실행합니다. 앱에 데이터가 표시되지 않는지 확인합니다.
항목 목록을 끌어서 새로 고침 제스처를 수행합니다. 그러면 로그인 화면이 표시됩니다. 유효한 자격 증명을 성공적으로 입력하면 앱에 할 일 항목 목록이 표시되고 데이터를 업데이트할 수 있습니다.