私は.NETバックエンドを使用したXamarin Formsモバイルアプリで作業しています。私はthis guideを踏襲し、正常Startup.csに1回の変更でカスタム認証を設定:なしAzureモバイルアプリXamarin.Formsを使用したカスタム+ Facebook認証
app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions
{
SigningKey = Environment.GetEnvironmentVariable("WEBSITE_AUTH_SIGNING_KEY"),
ValidAudiences = new[] { Identifiers.Environment.ApiUrl },
ValidIssuers = new[] { Identifiers.Environment.ApiUrl },
TokenHandler = config.GetAppServiceTokenHandler()
});
"もし(string.IsNullOrEmpty(settings.HostName))"。それ以外の場合は、ログイン後にすべてのリクエストが常に不正になります。
Serverプロジェクト:
認証コントローラ
パブリッククラスClubrAuthController:ApiController { プライベート読み取り専用ClubrContext dbContext。 プライベート読み取り専用ILoggerService loggerService;
public ClubrAuthController(ILoggerService loggerService) { this.loggerService = loggerService; dbContext = new ClubrContext(); } public async Task<IHttpActionResult> Post(LoginRequest loginRequest) { var user = await dbContext.Users.FirstOrDefaultAsync(x => x.Email == loginRequest.username); if (user == null) { user = await CreateUser(loginRequest); } var token = GetAuthenticationTokenForUser(user.Email); return Ok(new { authenticationToken = token.RawData, user = new { userId = loginRequest.username } }); } private JwtSecurityToken GetAuthenticationTokenForUser(string userEmail) { var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, userEmail) }; var secretKey = Environment.GetEnvironmentVariable("WEBSITE_AUTH_SIGNING_KEY"); var audience = Identifiers.Environment.ApiUrl; var issuer = Identifiers.Environment.ApiUrl; var token = AppServiceLoginHandler.CreateToken( claims, secretKey, audience, issuer, TimeSpan.FromHours(24) ); return token; }
}
Startup.cs
ConfigureMobileAppAuth(app, config, container); app.UseWebApi(config); } private void ConfigureMobileAppAuth(IAppBuilder app, HttpConfiguration config, IContainer container) { config.Routes.MapHttpRoute("ClubrAuth", ".auth/login/ClubrAuth", new { controller = "ClubrAuth" }); app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions { SigningKey = Environment.GetEnvironmentVariable("WEBSITE_AUTH_SIGNING_KEY"), ValidAudiences = new[] { Identifiers.Environment.ApiUrl }, ValidIssuers = new[] { Identifiers.Environment.ApiUrl }, TokenHandler = config.GetAppServiceTokenHandler() }); }
クライアントプロジェクト:を説明したように
MobileServiceUser user = await MobileClient.LoginAsync(loginProvider, jtoken);
は、さらに私は、紺碧のポータルにFacebookのプロバイダーを構成し210。 しかし、私はapp.UseAppServiceAuthentication(新しいAppServiceAuthenticationOptions(){...})をコメントアウトするときにのみ動作します。 Startup.csに保存します。 両方のタイプの認証を同時に行うために欠けているのは何ですか?
私はApp Service Authentication/Authorizationを有効にしていますが、app.UseAppServiceAuthentication(新しいAppServiceAuthenticationOptions(){...})なしで、未確認応答が返されています。 Startup.csに保存します。 Xamarin.Formsでカスタム+ Facebook認証を設定することは可能ですか?誰かが作業サンプルを提供できますか? –
これは可能です。 Adrianが指摘していることは、app.UseAppServiceAuthentication()がカスタム認証のピースに関連していないことです。ここで問題を紹介していると思います。文字制限を打たないように私自身の答えでもっと説明します:) – mattchenderson