当前位置: 首页 > news >正文

504 wordpress台州seo排名外包

504 wordpress,台州seo排名外包,阳江网站设计,成立公司的好处文章目录 OpenID Connect (OIDC)3种 授权模式 【服务端】express 集成OIDC【前端】react 集成OIDCoidc-client-js库 原生集成react-oidc-context 库非组件获取user信息 OAuth 2.0 协议主要用于资源授权。 OpenID Connect (OIDC) https://openid.net/specs/openid-connect-core…

文章目录

    • OpenID Connect (OIDC)
      • 3种 授权模式
    • 【服务端】express 集成OIDC
    • 【前端】react 集成OIDC
      • oidc-client-js库 原生集成
      • react-oidc-context 库
        • 非组件获取user信息

OAuth 2.0 协议主要用于资源授权。

OpenID Connect (OIDC)

https://openid.net/specs/openid-connect-core-1_0.html

开放身份连接,是基于 OAuth 2.0协议的一个扩展。通过扩展身份层,来实现去中心化的身份验证服务。
它允许客户端验证用户身份,并获取一些基本用户信息。

使用 OIDC,应用程序可以简化身份验证和授权流程
实现单点登录或先鉴权用户再返回资源

  • 主要包括以下角色:
    OpenID Provider(OP): 指授权服务器,负责签发 Id Token。Authing 是 OpenID Provider。
    End User(EU):资源所有者,即用户;
    ID Token:包含 EU 身份认证信息的 JWT 格式数据,是用户的身份凭证;

  • 主要特点包括:
    身份验证: OIDC 允许客户端应用程序验证用户的身份,确保只有授权的用户才能访问应用程序。
    用户信息: OIDC 提供了一种标准化的方式来获取有关已验证用户的基本信息,如用户名、电子邮件地址等。
    单点登录 (SSO): OIDC 支持单点登录,使用户只需登录一次就可以访问多个应用程序。
    安全性: OIDC 建立在 OAuth 2.0 的安全基础之上,提供了更强的安全性和隐私保护。

3种 授权模式

  1. 授权码流程
    1 前端登录,
    2 后端返回授权码(密钥),【前端需要安全存储密钥】
    3 授权码换token,ID Token、Access Token,【可以反复刷新token】
    4 前端保存并携带Token
    在这里插入图片描述
  2. 隐式流程
    1 前端登录,
    2 后端返回token,ID Token、Access Token,
    3 前端保存并携带Token
    在这里插入图片描述
    适用于 浏览器前端 无法安全存储密钥
  3. 混合流程

【服务端】express 集成OIDC

express-openid-connect 库

  • 应用配置
const { auth } = require('express-openid-connect');const app = express();app.use(auth({issuerBaseURL: 'OIDC url',baseURL: '授权登录成功后回调 url',clientID: 'AUTH_CLIENT_ID',secret: 'AUTH_CLIENT_SECRET',idpLogout: true,session: {store: redisStore,name: '',cookie: {domain: process.env.COOKIE_DOMAIN,},},}));
  • requiresAuth() 对指定接口进行 身份验证
var router = require('express').Router();
const { requiresAuth } = require('express-openid-connect');app.get('/profile', requiresAuth(), (req, res) => {res.send(`hello ${req.oidc.user.name}`);
});

【前端】react 集成OIDC

oidc-client-js库 原生集成

  • 安装 oidc-client-js / oidc-client-ts
npm install oidc-client-js
  • 初始化 OIDC 客户端实例
import { UserManager, WebStorageStateStore } from 'oidc-client-js';// 配置 userManager
const userManager = new UserManager({authority: 'OIDC 提供商的 URL',client_id: ' OIDC 提供商处注册的唯一 client_id',redirect_uri: 'OIDC 认证后回调url',// 认证信息存储到 localStorageuserStore: new WebStorageStateStore({ store: window.localStorage })
});function Root() {const [pageLoaded, setLoaded] = useState(false);// 在应用程序启动时初始化 OIDC 客户端useEffect(() => {userManager.getUser().then((user) => {if (user && !user.expired) {// 如果已经登录,将 user 对象存储在组件状态中setUser(user);} else {// OIDC 登录userManager.signinRedirect();}setLoaded(true);});}, []);
  • 使用 OIDC 认证的 token
import { userManager } from './oidc-config';async function fetchData() {const user = await userManager.getUser();if (user && !user.expired) {// 如果已登录,在请求头中附带 access_tokenconst response = await axios.get('/api/data', {headers: {'Authorization': `Bearer ${user.access_token}`}}}
}

react-oidc-context 库

react-oidc-context封装了oidc-client-ts,使用更简单

  • AuthProvider 集成 OIDC
import { AuthProvider } from 'react-oidc-context';
import { WebStorageStateStore } from 'oidc-client-ts';const oidcConfig = {authority: 'OIDC 提供商的 URL',client_id: ' OIDC 提供商处注册的唯一 client_id',redirect_uri: 'OIDC 认证后回调url',client_secret: 'client 密钥',automaticSilentRenew: true,loadUserInfo: true,// 认证信息存储到 localStorageuserStore: new WebStorageStateStore({store: localStorage,}),onSigninCallback: (): void => {window.history.replaceState({}, document.title, window.location.pathname);},
};function Root() {const [pageLoaded, setLoaded] = useState(false);return (<React.StrictMode>{!pageLoaded ? <PageLoadingSpinner /> : null}<!-- 在外层使用 AuthProvider 集成OIDC --><AuthProvider {...oidcConfig}><RouterProvider router={routes(setLoaded)} /></AuthProvider></React.StrictMode>);
}ReactDOM.createRoot(document.getElementById('root')!).render(<Root />);
  • 登录逻辑
  const auth = useAuth();useEffect(() => {if (!hasAuthParams() &&!auth.isAuthenticated &&!auth.activeNavigator &&!auth.isLoading) {// OIDC 登录auth.signinRedirect();}}, [auth]);// 登录成功后跳转 pageif (auth.isAuthenticated) {return <>{props.children}</>;}// 登录报错处理if (auth.error) {console.log(auth.error);}

对应的http请求

- 跳转到登录页
{{authority}}/.well-known/openid-configuration
- 获取token
{{authority}}/protocol/openid-connect/token
- 获取user info
{{authority}}/protocol/openid-connect/userinfo
  • 组件Component 内获取登录信息
    组件内可以使用 const auth = useAuth(); 获取auth对象,然后得到user
const auth = useAuth();
const token = auth.user?.access_token;
非组件获取user信息

非组件不能使用hook,只能从userStore配置中获取 user信息

import { User } from 'oidc-client-ts';function getUser() {// 之前把信息存储在了localStorage,就从localStorage获取const oidcStorage = localStorage.getItem(`oidc.user:${AUTH_URL}:${AUTH_CLIENT_ID}`);if (!oidcStorage) {return null;}return User.fromStorageString(oidcStorage);
}
http://www.shuangfujiaoyu.com/news/51840.html

相关文章:

  • 开源企业建站系统哪个好seo搜索优化专员
  • wordpress添加小工具栏北京网站优化体验
  • 有公网ip 如何做一网站济南网站建设哪家便宜
  • 陕西找人做网站多少钱优化公司网站排名
  • 企业公司如何做网站数据分析培训课程
  • 池州网站制作公司推广普通话手抄报文字
  • 济南网站制作方案关键词歌曲
  • 数据做图网站有哪些排名怎么优化快
  • b2b商城网站建设松原市新闻
  • 中小型企业电子商务网站建设百度统计登录
  • 做受视频网站 mcb3dbd网页制作源代码
  • 做的时间长的网站制作公司有没有免费的推广网站
  • 海宁网站怎么做seo优化大师最新版下载
  • 河南省网站备案南宁网站推广大全
  • 小米云网站开发网站seo怎么操作
  • 青岛网站制作公司网络seo网站优化培训怎么样
  • 网站打开是建设中电商关键词一般用哪些工具
  • 深圳建设局网和住房网seo搜索优化软件
  • 烟台网站制作长沙seo关键词排名
  • 招聘网站建设工作汇报同城推广
  • 建设安全员协会网站各大免费推广网站
  • html5高端网站建设搜索引擎的关键词优化
  • php7 nginx wordpress关键词优化seo多少钱一年
  • 方庄网站制作百度seo怎么收费
  • 黄江镇网站仿做手机百度极速版
  • 网站模板下载破解版网站运营优化培训
  • 网站开发亿码酷技术谷歌平台推广外贸
  • 和平网站建设1元购买域名
  • 优秀产品设计作品seo搜索优化 指数
  • 零基础搭建网站中国建设网官方网站