ICP链绑定自定义域名,设置身份同源认证

域名申请和配置

当我们的ICP项目完成上到主网后,ICP会提供一个官方的初始域名地址,但是那个域名地址包含CanisterId比较难记。为了让项目更加容易推广和熟知,还需要申请一个简单的域名。

购买域名

ICP官方文档给出的DNS设置里,有Namecheap、GoDaddy、 Amazon Route 53三家,其中Namecheap尤为支持度最好,价格上差别不大,故我们使用Namecheap。需要注意的是支付时需要银行卡信用卡支付或者Paypal支付。

DNS设置

购买完域名后,进入Dashboard可以看到我们的域名列表,点击Manage-Advanced DNS,进入设置DNS页面。在这里我们需要设置三条记录

  1. ALIAS:Host设置为 @ ,value设置为{自定义域名地址}.icp1.io
  2. CNAME: Host设置为_acme-challenge, value设置为_acme-challenge.{自定义域名地址}.icp2.io
  3. TXT: Host设置为_canister-id, value设置为项目前端canister的id

项目配置

我们还需要在ICP的项目文件中,进行配置登记,好让我们的域名注册在ICP链的边界节点来进行流量转发、以及跨域配置,。我们需要在前端项目的assets下,创建相关文件。配置完成后,重新部署前端项目几分钟后即可通过域名访问。

创建.ic-assets.json文件,用于跨域配置和打包时声明文件不要被忽略

[
    {
        "match": ".well-known",
        "ignore": false
    },
    {
        "match": ".well-known/ii-alternative-origins",
        "headers": {
          "Access-Control-Allow-Origin": "*",
          "Content-Type": "application/json"
        },
        "ignore": false
    }
  ]

创建.well-known目录,并创建ic-domains文件,并在文件中添加购买的域名列表

身份同源认证

ICP的互联网身份是根据主机号进行分发的,所以当我们仅设置好上述流程后会发现,我们通过域名和ICP默认地址进去后II认证给的身份不同。当我们进行项目域名更换之类的会导致我们用户数据丢失或者无法绑定。所以需要设置同源认证。

配置ii源列表

在前端项目/src/assets/.well-know目录下创建ii-alternative-origins 文件,并输入下面内容,将domain换成你自己的域名。

{
  "alternativeOrigins": [
    "https://{domain1}",
    "https://{domain2}"
  ]
}

js登陆设置认证参数

当我们登陆时,需要指定当前应用的认证源是什么,如果没有进行上一步操作,则通过自定义域名访问时将不支持自定义域名的身份发放。

import { AuthClient } from '@dfinity/auth-client'
import { HttpAgent } from '@dfinity/agent'
const _authClient = await AuthClient.create({idleOptions:{ disableIdle: true,}})
_authClient.login({
  {
    derivationOrigin: "https://{your frontend canister id}.icp0.io",
    identityProvider: 'https://identity.ic0.app/#authorize',
  }
  onSuccess: () => console.log("login success"),
})

完成上述操作后,更新部署前端项目后,进行II登陆最终效果

参考

域名DNS配置项目配置指定认证源II认证

全部评论

相关推荐

浏览器内核(Browser Engine)是指浏览器中负责解析和渲染网页内容的核心组件。 它是浏览器的关键部分,负责处理 HTML、CSS、JavaScript 等前端技术,将网页内容转换为可显示的图形界面。以下是一些常见的浏览器内核:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=e603181d8a9b4b9ea0cc9be7cb8778b7Trident(也称为 MSHTML):Trident 内核是由微软开发的,用于 Internet Explorer 浏览器。它被用于自 Internet Explorer 4(1997 年)起的多个版本。Gecko:Gecko 内核是 Mozilla Foundation 开发的,用于 Firefox 浏览器以及其他使用 Mozilla 技术的应用。它被设计成高度灵活的内核。WebKit:WebKit 内核最初是由 Apple 开发的用于 Safari 浏览器。后来,Google 采用了 WebKit 作为 Chrome 浏览器的内核。它支持 HTML、CSS 和 JavaScript,还有一套高性能的渲染引擎。Blink:Blink 是由 Google 发起的一个分支,基于 WebKit。自 Chromium 项目内核改为 Blink 后,许多浏览器如 Chrome、Opera 和 Edge(Chromium 版)都使用了 Blink 内核。除了上述常见的浏览器内核,还有一些较小或基于开源项目的内核,例如 KHTML(Konqueror 浏览器的内核),EdgeHTML(旧版 Edge 浏览器的内核)和 Servo(由 Mozilla Research 开发的实验性内核)。需要注意的是,随着时间的推移,浏览器内核的技术和实现细节可能会有所变化,因此查阅相关资料以获取最新信息是明智的。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务