PHPサーバーでiPhoneアプリからのユーザー認証のための優れたソリューション

私はiPhoneアプリのための安全なユーザー認証を実装しようとしています。私はかなり初心者です。私はさまざまな方法で多くのコードスニペットと提案を見て、いくつかは日付がずれていたようです。現在のシナリオでは、何が良い選択肢でしょうか? JSON? ASIHTTPリクエスト?

今まで、私はこれに対して適切な解決策を見つけることができませんでした。私は、さまざまなアイデアを統合するのが少し難しく、自分のニーズに合った解決策を考え出すことが難しいと思っています。誰かがサンプルコードを共有したり、少なくともどこかに投稿されたソリューションを私に指摘したりすることができれば素晴らしいだろう。前もって感謝します。

トニー

0

2 答え

あなたのサーバにはどのようなユーザ認証がありますか?認証のために基本認証を使用することができます。これは、 認証 ヘッダーを送信します。

ASIHTTPRequest has functionality enabling basic auth and even presenting a login dialog, if you're OK with using that (the project's just been discontinued).

You would obviously need to implement basic authentication on your server as well.

1
追加された
ASIHTTPRequestを使用している場合は、[request setUsername:@ "foo"]と[request setPassword:@ "bar"]を使用して、認証情報を設定するだけで済みます。また、組み込みの認証ダイアログを使用する場合は、[request setShouldPresentAuthenticationDialog:YES]も設定してください。他のフレームワークを使用している場合、コードは[addRequestHeader:@ "Authorization" value:@ "あなたのコード化された認証文字列"]と非常によく似ています。
追加された 著者 Kristofer Sommestad,
ご回答いただきありがとうございます。私はサーバーを制御している。私が基本的に必要とするのは、「POST」を使用して認証を実行することです。私はObjective-Cの新機能ですから、サンプルコードは大きな助けになります。私は要求(NSData、NSDictionary)が構成されている部分が必要です。
追加された 著者 Tony P V,

私はこれを使用して、iOSアプリケーションから遠隔のPHPサーバーでユーザーを認証しました。もう少し遅いですが、それは誰かを助けるかもしれません:

-(void)saveNewUserDetails{
    [[NSUserDefaults standardUserDefaults] setObject:self.username.text forKey:@"userName"];
    [SSKeychain setPassword:self.pwd.text forService:@"MiniCEXReporting" account:self.username.text]; //store securely rather than in NSUserDefaults
    [[NSUserDefaults standardUserDefaults] synchronize];

}

-(void) makeConnection{
    self.activityIndicator.hidden=NO;
    [self.activityIndicator startAnimating];

    receivedData=[[NSMutableData alloc] init];

    NSString *userString=self.username.text;
    postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://someURLhereWithUsernameappended/%@", userString]]];

    //for the real thing
    //postRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://somsis-dev.leeds.ac.uk/api/minicex/%@", self.username.text]]];

    [postRequest setHTTPMethod:@"POST"];

    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:postRequest delegate:self];
    [connection start];    
}

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
    if ([challenge previousFailureCount] == 0) {
        NSLog(@"received authentication challenge");
        NSURLCredential *newCredential = [NSURLCredential credentialWithUser:self.username.text
                                                                    password:self.pwd.text
                                                                 persistence:NSURLCredentialPersistenceForSession];
        NSLog(@"credential created");
        [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
        NSLog(@"responded to authentication challenge");
    }
    else {
        NSLog(@"authentication failure username -%@- with password -%@-", self.username.text, self.pwd.text);
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Authentication Error"
                                                        message:@"Please check your username and password"
                                                       delegate:self
                                              cancelButtonTitle:@"Ok"
                                              otherButtonTitles:nil];
        [alert show];
        [self.activityIndicator stopAnimating];
        self.activityIndicator.hidden=YES;
    }
}
0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript