Tag: authentication

处理Firebase + Facebooklogin过程

我在我的应用程序中有Facebooklogin,而且我在圈子里运行,试图让需要通过注册屏幕的新用户和注册用户直接进入应用程序。 这是处理Facebooklogin的function(当点击button和Facebook授权时): func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { if error != nil { return } FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "name"]).start { (connection, result, err) in let accessToken = FBSDKAccessToken.current() guard let accessTokenString = accessToken?.tokenString else {return} let credentials = FIRFacebookAuthProvider.credential(withAccessToken: accessTokenString) FIRAuth.auth()?.signIn(with: credentials, completion: { (user, error) in if error != […]

如何使用Google离线访问令牌在iOS的后台进行身份validation?

简洁版本: 我想使用Objective-C的Google OAuth2客户端为我创build一个有效的GTMOAuth2Authentication对象,以便在我的应用程序中使用,并使用我从后端获得的脱机访问令牌。 我怎么能做到这一点? 我的情况: 我的应用使用Google Analytics(分析)只读范围来获取有关用户网站的一些数据。 我完成这个任务的方式是使用Google OAuth2客户端为Objective C提供的GTMOAuth2ViewControllerTouch ViewController进行login。然后,它将为我提供有效的GTMOAuth2Authentication对象,以便我可以通过Google API客户端查询Google Analytics。 现在,我们不希望为用户提供Google Analytics访问权限(有些没有Google帐户,一般而言,我们希望通过应用保持简单的信息)。 这意味着我们需要使用我们的帐户login(可以访问所有网站的Google Analytics数据)。 显然,我们不能给我们的用户我们的凭据,所以我们必须find一个解决scheme。 我的计划: 我认为这个问题可以通过从我们的后端(通过SSLencryption)请求我们的(离线访问)令牌string来解决,将其保存到用户的钥匙串中,并在应用程序中进一步使用它来查询分析。 然后我们让用户login我们的服务(这样我们可以确定用户有权访问哪个网站),并显示数据。 我的问题: 我到处search过,查看了Google的(非常简单的)文档,检查了GTMOAuth2Authentication源代码,但似乎无法绕开这个问题。 在我看来,会有这样的解决scheme(因为我们在CMS中使用类似的方法让用户张贴到我们的Facebook墙),所以我在这里错过了什么? 当前的login码: GTMOAuth2ViewControllerTouch *viewController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:scope clientID:kMyClientID clientSecret:kMyClientSecret keychainItemName:kKeychainItemName completionHandler: ^(GTMOAuth2ViewControllerTouch *viewController, GTMOAuth2Authentication *auth, NSError *error) { if (error != nil) { // Authentication failed DebugLog(@"Failed!"); } else { // […]

我可以让Firebase使用用户名login过程吗?

我想制作一个允许用户名login的系统。 这个过程需要以下几点: 用户必须使用电子邮件/密码进行注册 用户可以设置一个唯一的用户名 用户可以使用电子邮件或用户名login 用户可以通过电子邮件或用户名恢复他们的密码 该function必须在启用了持久性的数据库上工作 这个问题以前已经回答过,但是它禁用了用户使用密码恢复的function。 他们也没有处理大小写敏感问题,一个人可以注册为“史酷比”,另一个人可以注册为“史酷比”。

为iOS创build一个用户authentication系统(以前用Parse希望AWS)

由于Parse正在消失,我最初使用_User和PFUser实现来创build用户身份validation过程。 自此我开始转向亚马逊的AWS Mobilie Hub。 我在Amazon Cognito系统中注意到,他们允许Google,Facebook,Amazon凭证供应商,我不想使用它。 我去看看自定义供应商的select。 我必须创build一个客户端和服务器端代码的自己的后端身份validation系统才能正常工作吗? 是否有一个简单的方式(但安全)像iOS Parse的iOSlogin过程? 谢谢,任何帮助将不胜感激(在线阅读了很多)。

设置第三方服务器与Game Center进行交互

我正在考虑在iOS游戏中添加一个function,以便玩家创build自己的游戏关卡,与其他玩家分享关卡等等。还有一个用户创build关卡的公共存储库,可以按创builddatesorting,评分,难度或其他标准。 这种function需要第三方服务器。 我想我会用Sinatra创build一个RESTful API并在Heroku上运行它。 我的问题是:什么是最好的方式来validation这个API的请求? 我不想要求玩家创build用户名和密码。 我想只使用Game Center的ID系统。 有什么build议么? 我从来没有做过任何服务器端的东西,所以任何帮助表示赞赏! 澄清 是的,我知道苹果不提供自己的系统。 但它确实给开发人员提供了唯一的Game Center标识符(developer.apple.com/library/mac/#documentation/…),我希望能以某种方式使用它来推出我自己的身份validation系统,而不需要用户通过Facebooklogin/微博/等。 如果可能的话。

iOS / Cocoa – NSURLSession – 处理基本的HTTPS授权

[编辑提供更多信息] (我没有使用AFNetworking来做这个项目,我将来可能会这样做,但是希望先解决这个问题/误会。) 服务器设置 我不能在这里提供真正的服务,但它是一个简单,可靠的服务,根据以下URL返回XML: https://开头的用户名:password@example.com/webservice 我想通过使用GET连接到通过HTTPS的URL,并确定任何身份validation失败(HTTP状态代码401)。 我已经确认Web服务可用,并且我可以成功(http状态码200)使用指定的用户名和密码从URL抓取XML。 我已经通过Web浏览器和AFNetworking 2.0.3完成了这个工作,并且使用了NSURLConnection。 我也证实,我在所有阶段使用正确的凭证。 鉴于正确的凭据和下面的代码: // Note: NO delegate provided here. self.sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration]; self.session = [NSURLSession sessionWithConfiguration:self.sessionConfig delegate:nil delegateQueue:nil]; NSURLSessionDataTask *dataTask = [self.session dataTaskWithURL:self.requestURL completionHandler: … 上面的代码将工作 。 它将成功连接到服务器,获得一个200的http状态码,并返回(XML)数据。 问题1 这种简单的方法在证书无效的情况下失败。 在这种情况下,完成块从不被调用,不提供状态码(401),并且最终任务超时。 试图解决scheme 我将一个委托分配给NSURLSession,并处理以下callback: -(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler { if (_sessionFailureCount == […]

iOS:如何以编程方式从应用程序中的私钥和x509certificate创buildPKCS12(P12)密钥库?

这个问题显然是相似的,但没有任何答案:以编程方式为iPhone创build一个x509证书,而不使用OpenSSL 在我们的应用程序(服务器,客户端)中,我们正在实现客户端身份validation(基于X509Certificate的SSL)。 我们已经有一种方法来生成一个keypair ,创build一个PKCS10 Certificate Signing Request ,由self-signed CA并创build一个X509Certificate ,并将其发送回去。 但是,要在SSL请求中使用此证书,必须将private key和X509Certificate导出到PKCS12 (P12) keystore 。 有没有人知道如何做到这一点,或者即使有可能? 客户端必须生成P12文件(我们不想泄露私钥),客户端运行的是iOS,并且是移动设备。 该解决scheme使用BouncyCastle(SpongyCastle)的Android工作,但我们没有发现任何iOS。 编辑:在Java中,这个导出是由以下内容完成的: ByteArrayOutputStream bos = new ByteArrayOutputStream(); KeyStore ks = KeyStore.getInstance("PKCS12", BouncyCastleProvider.PROVIDER_NAME); ks.load(null); ks.setKeyEntry("key-alias", (Key) key, password.toCharArray(), new java.security.cert.Certificate[] { x509Certificate }); ks.store(bos, password.toCharArray()); bos.close(); return bos.toByteArray();

带有完成处理程序的NSURLConnection sendAsynchronousRequestvalidation

一般来说,我喜欢用NSURL的sendAsynchronousRequest类方法使用完成处理程序块来“消灭和忘记”,但是在需要身份validation时,似乎可能不是一个选项。 当使用这样的完成处理程序样式请求时: [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.mysite.com/"]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { //Do Stuff }]; 什么是处理身份validation的正确方法? 我需要分配和初始化NSURLConnection并设置一个委托,而不是使用这种类方法风格? 我想我明白如何使用委托函数正确进行身份validation,但我试图弄清楚是否可以将它包含在completionHandler块中,或者是否有更好的方法来执行此操作。 – (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { if ([challenge previousFailureCount] > 0) { NSLog(@"Authentication Failure"); [connection cancel]; } else { NSURLCredential *credential = [NSURLCredential credentialWithUser:self.username password:self.password persistence:NSURLCredentialPersistenceForSession]; [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; } }

如何唯一识别ios设备

在我目前的应用程序中,我必须让用户从不同的iOS设备login到他们的帐户。 目前我正在做一个令牌值的用户身份validation。 但为了支持多个设备login,我必须find另一种方式来做到这一点。 因此,我想保存设备uuid与令牌authentication+安全。 然后,我才知道我不能使用设备的uuid ,而是必须使用可能提供或不提供用户或设备信息的identifierForVendor 。 那么,有没有人可以提出更好和适当的方式来实现这个多个设备loginfunction为同一个用户帐户在IOS?

如何在UIWebView中正确地进行身份validation?

我想在我的UIWebView中支持HTTP基本authentication。 目前,我正在取消请求 webView:shouldStartLoadWithRequest:navigationType:然后在我自己的NSURLConnectionDelegate中处理它们以检查并提供凭据(如果需要的话)。 然后我使用loadData:MIMEType:textEncodingName:baseURL:在Web视图中呈现HTML。 这适用于任何传递给委托的url。 我的问题是,委托从来没有被要求embedded式元素,如图像,JavaScript或CSS文件。 所以如果我有一个HTML页面引用了一个被基本authentication保护的图片,那么这个图片就不能被正确加载。 此外, webView:didFinishLoad:永远不会被调用,因为Web视图无法完全加载页面。 我已经通过App Store上的第三方浏览器Terra查看了这个案例,它可以完全解决这个问题。 我认为可以通过提供我自己的NSURLProtocol来解决这个问题,但这似乎太复杂了。 我错过了什么?