获取Web API令牌

时间:2015-10-26 05:56:05

标签: asp.net-web-api2 thinktecture-ident-model

曾几何时我曾经安装Thinktecture.IdentityModel,使用基本身份验证调用它来获取令牌,然后将其传递给ajax调用Web API的标头。

我只是试图这样做,并且它被禁止了。

向上看潜望镜!

找不到方法:ctor签名不匹配(为Fiddler欢呼)。

工作的项目进行比较显示,System.IdentityModel.Tokens.Jwt版本2.0.0.0中存在所需的签名,但版本4.0中不再存在该签名.20622.1351

快,罗宾 - 到Bingpole!

有一个github支持查询on this very topic并在我们发现的评论中

  

leastprivilege于1月27日发表评论

     

AuthenticationHandler不再是推荐的方法   Web API v2,因为现在一切都是内置的 - 使用中间件。

解决问题,Grasshopper

这是一个明确的意见。他是图书馆作者之一。对于需要提出问题的人来说,这也是非常无益的。

有人可以指出我适当的介绍和教程链接,这样我就可以加入那些狡猾地点头的人的行列,并对这篇评论的禅宗简洁感到惊叹吗?

我使用AuthenticationHandler来验证包含用户名和密码的SQL Server表。纯粹主义者请不要告诉我,有无数的企业不会或不会使用第三方OAUTH。我需要将用户名/密码对转换为我可以在我的Web API方法上使用的会话令牌。这就是全部。我碰巧同意OAUTH,但支付费用的人对大型统一身份验证不感兴趣,他们喜欢孤岛。

补充资料

我在整个身份验证上找到了publically accessible PluralSight course。由编写ThinkTecture.AuthenticationHandler的人编写,作为近期变更的背景资料,它非常好。

在材料的过程中,他引用another PluralSight course on MVC,其中information on OWIN(纯API即接口)和Katana(这是Microsoft的实现) OWIN)。

此时我很清楚

  • 出于各种原因,基础架构发生了根本性的变化。
  • MessageHandler不是进行身份验证的地方。
  • 有一个名为Thinktecture.IdentityModel.Owin.BasicAuthentication的NuGet包,在OWIN / Katana应用程序中被描述为用于HTTP基本身份验证的OWIN中间件。

我对新景观的模糊理解表明中间件包是我需要的。 NuGet做了它的事情,现在我必须提供一些代码来将中间件插入到OWIN中间件链中,并提供更多代码来实际验证凭据。尽可能接近我需要在Startup.Auth.cs中执行此操作

public void ConfigureAuth(IAppBuilder app)
{
  app.UseBasicAuthentication("some_realm", (id, secret) =>
  {
    if (id == secret) //should check database, but never mind right now
    {
      var claims = new List<Claim> {
        new Claim(ClaimTypes.NameIdentifier, id),
        new Claim(ClaimTypes.Role, "Foo") //this can come from db also
      };
      return Task.FromResult<IEnumerable<Claim>>(claims);
    }
    return Task.FromResult<IEnumerable<Claim>>(null);
  });

假设到目前为止我已经做到了这一点,我该如何使用它?我是否继续使用[Authorize]

修饰Web API方法

成功!近。

目前,来自我的测试客户端的请求导致我在行if (id == secret)上设置的断点命中,并且条件得到满足,因为id和secret包含我的测试代码发送的值。声明对象是根据上面的代码创建并正式返回的,但测试客户端收到401 Unauthorized。

这几乎可以肯定是由于无法创建主体对象。使用UserManager和IdentityModel进行了一些业务,并且可以自定义它以使用我们自己的架构。

0 个答案:

没有答案