首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.Essentials WebAuthenticator服务器端实现重定向到登录页面而不是401?

Xamarin.Essentials WebAuthenticator服务器端实现重定向到登录页面而不是401?
EN

Stack Overflow用户
提问于 2020-05-01 11:01:45
回答 3查看 1K关注 0票数 1

我试图理解WebAuthenticator文档和示例。我的目标是在应用程序(oauth 2)中有一个基于服务器的社交登录。

在使用此实现时,必须假定另一个Controller中的I可以使用[Authorize]属性来要求身份验证。但是,当我这样做时,会发生的情况是,它试图重定向到/Account/Login,而/Account/Login又不存在,从而提供了一个404。

代码语言:javascript
复制
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace Sample.Server.WebAuthenticator.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    [Authorize]
    public class SampleController : ControllerBase
    {
        // GET: api/Sample
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

因此,尝试Android仿真器的概念会导致api控制器url“找不到”,也就是404,而不是某种需要的身份验证,比如401。

要测试这一点,请从上面下载Xamarin必需品示例。使用API读/写模板添加SampleController。构建Sample.Server.WebAuthenticator,将其设置为唯一的启动项目并进行调试。确保可以访问/api/sample并接收json结果。接下来,向SampleController添加授权,并对其进行调试。它将重定向到缺少的登录页面。

我有点困惑,因为服务器示例不像wildermuth的Jwt文章那样工作

什么是正确的方式通知应用程序,它应该认证?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-09 20:30:29

该示例不打算针对服务器进行身份验证,甚至您看起来也是如此。这样做的目的是对google进行身份验证。然后,令牌可以在对google的api调用中使用。没别的了。即使添加了Jwt身份验证,令牌也不能用于自己的web。

因此,为了对自己的web进行社会认证,必须使用能够联合的解决方案,如IdentityServer4。ID4将取代示例服务器,它将在针对社交提供商发出自己的令牌后,应用程序可以使用它来验证自己的web。

票数 0
EN

Stack Overflow用户

发布于 2020-08-23 19:55:22

在示例服务器中对Microsoft帐户进行身份验证时,当路由到/signin-microsoft时将返回以下错误:

异常: OAuth令牌端点失败:状态:BadRequest;标头:缓存-控制:无存储,无缓存

票数 0
EN

Stack Overflow用户

发布于 2020-06-08 20:36:31

您需要从[Authorize]控制器类中取出SampleController属性,或者添加[AllowAnonymous]属性以允许从应用程序访问它,而无需首先通过登录页面进行身份验证。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61541201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档