自学内容网 自学内容网

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文件,并在文件中添加购买的域名列表

.ic-assets.json进行如下配置,更新后即可访问域名看到我们的项目了。

身份同源认证

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认证


原文地址:https://blog.csdn.net/he1154910941/article/details/142446908

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!