登录认证
约 720 字大约 2 分钟
2025-04-23
前言
OpenAuth.Net支持两种登录认证方式:Token认证和自己搭建的统一认证服务OpenAuth.Identity。
这两种方式通过配置webapi的appsettings.json可以自由切换:
"IdentityServerUrl": "http://localhost:12796", //IdentityServer服务器地址。如果为空,则不启用OAuth认证Token认证
当我们启动OpenAuth.WebApi时,如果IdentityServerUrl为空,则采用普通的token认证,这时不需要启动OpenAuth.Identity项目:
"IdentityServerUrl": "", //如果为空,则采用普通的token认证这时前端发出请求时会在请求头中添加X-Token字段,携带token值。以OpenAuth.WebApi为例,客户端在访问的接口时,先调用登录接口,得到授权token:

然后把获取到的token值添加到http header的X-Token中,即可调用对应的API接口。

OpenAuth.Net 统一认证
不同于其他项目使用微信登录、支付宝登录等,OpenAuth.Net的统一认证指的是自己搭建一套基于 OpenIddict 的统一身份认证服务,为其他项目提供 OpenID Connect / OAuth 2.0 协议支持,提供安全可靠的身份验证服务。
项目中的OpenAuth.Identity启动后,直接访问http://localhost:12796,效果如下: 
这时我们修改OpenAuth.WebApi的IdentityServerUrl配置:
"IdentityServerUrl": "http://localhost:12796", //IdentityServer服务器地址。OpenAuth.WebApi效果
当启用了Identity时,客户端调用API需要先通过OpenAuth.IdentityServer服务器的OAuth验证,才能调用接口。目前调用OpenAuth.WebApi的客户端有两种:
vue版本
在使用vue前端访问OpenAuth.WebApi时,已经在文件.env.dev中配置好相关选项,可以直接使用,无需其他处理。
VITE_OIDC_AUTHORITY = http://localhost:12796 #Identity服务器地址
VITE_OIDC_CLIENTID = OpenAuth.Pro #客户端名称
VITE_OIDC_REDIRECTURI = http://localhost:1803 #登录回调
VITE_OIDC_RESPONSETYPE = code #认证方式
VITE_OIDC_SCOPE = openid profile openauthapi #认证范围
VITE_OIDC_AUTOMATICSILENTRENEW = true #自动续期如果服务端启用了Identity认证,则打开登录界面如下: 
这时点击登录超链接,会跳转到OpenAuth.Identity登录界面。效果如下: 
输入用户名和密码,登录成功后,会自动跳转回原页面,并提示授权成功。
SwaggerUI
当我们启动了OpenAuth.WebApi,在浏览器打开http://localhost:52789/swagger/index.html时,其实是Swagger框架给我们生成的一个调动客户端,对于启用了Identity的服务,Swagger会有一个Authorise的操作按钮:


点击登录超链接,会跳转到OpenAuth.Identity登录界面。登录成功后会自动跳转回来。提示授权成功:

这时所有的接口都可以直接访问,访问时会在http头上自动加认证信息:

