• Authentication in .NET Web Api


    在介绍WebApi这个小demo前,先来简单说一下OAuth这个东西。

    OAuth开放授权,用户可以对自己的资源进行第三方授权,那么第三方就可以不用你的账号密码就可以访问你授权的资源了。比如一些论坛直接用qq账号登陆、微信公众号等,都是OAuth的应用体现。

    这里的WebApi的demo也是一样,用户只有获得授权token才能访问api,有人对这个token比较好奇,然而OAuth2.0并没有介绍token的算法,只是介绍了如何使用,Google、Twitter倒是明确说明使用了这种Bearer Token,当然也可以自己写token。

    Bearer Token用的Base64的编码格式,它有个Bearer的前缀,形式如下:

    Bearer kki94xl28AsVujf-j_sXNtX6Ybd-O0iFoIZZbdn22zcLQvwlEWcvfRLQh2PTz_PsbNKQbeekWetJ01gAjtBBC8f3FB4BqTuRvQiG0cM48LLq3oAxJpuFD0TKJnWmf5mrCMFBu45mbonD2-v_qJIPgh0YLcXb6Hl0qCo4nf_gwY11wiuj-xsUf8lNLLPg4MZeLmTLx-yEHnf_HtZ-4FCsLWiCVmWHTTvbLP5fgnmRCd5xFx-Nq-w0wqtEs3ttN6TJum7fFRpfsfTCYV768nm14EgHm2xAkYp8elvT0Etv-IibuNjjoEV9TwyzOPSEBL6i1RQ0QsM0_-KwCvLOVe9h3lXHrC6Z2FimQOJBfMe80jbAAlD3tb3XdQumICVrSrFDTPsxkOWirCe-p5ah3tXLUq2a4f_E_ClEWdLBVCbrmVnC5ljZBp7yGDO8wx2RX3ZquvzQpiYzk9I6L-wQrky1Mmugt__9HJPw0rL8iWccYT3q3oYsTOz6Cr_sbr7Z6q6O

    那么拿到的token之后,可以用http请求resource,header如下:

    GET /resource HTTP/1.1
    Authorization: Bearer ...
    Host: ...

    ok,上面只是简单介绍了下OAuth,并不涉及OAuth的框架原理,有兴趣看一下官方的doc。

    言归正传,我们先用vs建立一个名为WebApiDemo的project。

     

    我们看一下controller:

    AccountController: 登陆用户操作

    ValuesController: api操作

    我们调试一把project,到达API页签下。这里列出了以上Controller的用户和api的操作部分。

    我们准备试一下API标签下列出的register用户的api。这里我们用到了一个Fiddler的http debug工具。

    我们在框框里填入一些测试数据。

    看一下调试结果,双击一下左侧的栏目。看到http表单提交返回结果ok。

    我们再回到解决方案,看到project自动创建了一个WebApiDemo前缀的express db,如图看到已经录入了我们的测试数据。

    数据库的连接在web.config也可以作修改。

    看一下project的startup.cs定义了token验证的server地址。

    尝试获取一个token。注意下头文件。

    返回结果。复制一下这个server分配的token。

    我们用这个token去验证一下api。

    头文件。

    结果,ok返回了两个字符串。token验证成功。

     

    我们把token抹去,再次测试一下,发现api报了一个401的错误。

    ok,以上就是一个简单的针对微软web api这块的介绍,另外有关于资源授权、Resources Server、Authorization Server和Client的搭建,OAuth也提供了相应的解决方案,想好好理解oauth有必要看看它的文档,有关于.net这块,可以去github看一下dotnetopenauth。

  • 相关阅读:
    jQuery+d3绘制流程图OK
    jQuery+d3绘制流程图OK
    史上最全的后端技术大全,你都了解哪些技术呢?
    史上最全的后端技术大全,你都了解哪些技术呢?
    R语言面板数据分析步骤及流程
    R语言面板数据分析步骤及流程
    SQL Server之深入理解STUFF
    1048:有一门课不及格的学生
    1048:有一门课不及格的学生
    1047:判断能否被3,5,7整除
  • 原文地址:https://www.cnblogs.com/yuefei/p/4250027.html
Copyright © 2020-2023  润新知