问题:
MobileServiceClient.LoginAsync永远不会退出登录对话框 - 即使在返回访问令牌后也是如此。
环境:
详细信息:
在我的应用程序中,以下代码无法从第二行显示的对话框返回:
var client = new MobileServiceClient("https://hana.azure-mobile.net", applicationKey);
var result = await client.LoginAsync("SmartThings");
猜测:
我怀疑我的自定义AuthenticationHandler中用于处理挑战的代码主要是责备。我重写ApplyResponseChallengeAsync的AuthenticationProperties中的RedirectUri始终为null - 因此它将重定向uri设置为请求uri。
代码如下所示:
var redirectUri = Request.FromPath(Options.CallbackPath);
var properties = challenge.Properties;
if (String.IsNullOrEmpty(properties.RedirectUri))
{
properties.RedirectUri = Request.Uri.AbsoluteUri;
}
// OAuth2 10.12 CSRF
GenerateCorrelationId(properties);
var requestUrl = FormAuthorizeRequest(properties, redirectUri);
Response.Redirect(requestUrl);
尝试解决
其他详细信息
我必须创建一个自定义LoginProvider和OWIN Middleware来将我的自定义AuthenticationHandler注册到owin管道中。这似乎已正确设置,但我的AuthenticationHandler的实现可能是错误的。如果有助于加快解决这个问题,我很乐意提供其他详细信息。
更新
SmartThings的回复给出了错误" redirect_mismatch"尝试使用提供的回调uri从WebAuthenticationBroker登录时在正文中。
但是,在浏览器中导航时,重定向uri会被处理为" https://hana.azure-mobile.net/signin-SmartThings?code=somemassivecode"
这让我感到困惑,因为我期望看到一个访问令牌,而不是一个身份验证令牌,作为重定向uri。