WalletLibrary 1.0.1

WalletLibrary 1.0.1

Sydney MortonLogan Girvin您的名字 维护。



  • 作者
  • symorton

Microsoft Entra 钱包库

badge-privatepreview badge-packagemanagers-supported badge-pod-version badge-languages badge-platforms badge-license badge-azure-pipline

简介

Microsoft Entra 钱包库为 iOS 应用提供了通过支持根据 OpenID Connect、展示交换、可验证凭证等更多即将推出的行业标准发行和展示验证 ID 的能力,从而开始使用 Microsoft EntraVerified Id 平台的功能。


安装

您可以通过在 Podfile 中添加 Wallet Library 来使用 Cocoapods 安装钱包库。

target "YourApp" do
  use_frameworks!
  pod "WalletLibrary", "~> 0.0.1"
end

注意:此 Pod 需要使用 Frameworks。


快速入门

以下是如何使用此库的简单示例。有关更深入的示例,请查看示例应用。

/// Create a verifiedIdClient.
let verifiedIdClient = VerifiedIdClientBuilder().build()

/// Create a VerifiedIdRequestInput using a OpenId Request Uri.
let input = VerifiedIdRequestURL(url: URL(string: "openid-vc://...")!)
let result = await verifiedIdClient.createRequest(from: input)

/// Every external method's return value is wrapped in a Result object to ensure proper error handling.
switch (result) {
case .success(let request):
    /// A request created from the method above could be an issuance or a presentation request. 
    /// In this example, it is a presentation request, so we can cast it to a VerifiedIdPresentationRequest.
    let presentationRequest = request as? VerifiedIdPresentationRequest
case .failure(let error):
    /// If an error occurs, its value can be accessed here.
    print(error)
}

在发布时,我们支持以下请求要求

要求 描述 按需支持
GroupRequirement 验证器/发行者可以请求多个要求。如果请求多个要求,则 GroupRequirement 包含要求列表。 发行/展示
VerifiedIdRequirement 验证器/发行者可以请求一个验证 ID。有关满足要求的有用方法的示例,请参阅下文。 展示(发行将于六月末完成)
SelfAttestedClaimRequirement 发行者可能要求一个自证声明的字符串值。 发行
PinRequirement 发行者可能需要用户提供的密码。 发行
AccessTokenRequirement 发行者可能请求访问令牌。必须使用外部库检索访问令牌。 发行
IdTokenRequirement 发行者可能请求 ID 令牌。如果 ID 令牌尚未注入到请求中,则必须使用外部库检索 ID 令牌。 发行

要满足要求,将其实例化到正确的 Requirement 类型,并使用 fulfill 方法。

if let verifiedIdRequirement = presentationRequest.requirement as? VerifiedIdRequirement {
    verifiedIdRequirement.fulfill(with: <Insert VerifiedId>)
}

VerifiedIdRequirement 包含一个辅助函数 getMatches,它将从满足 VerifiedIdRequirement 约束的验证 ID 列表中筛选出所有验证 ID。

let matchingVerifiedIds = verifiedIdRequirement.getMatches(verifiedIds: <List Of VerifiedIds>)

您还可以验证要求确保要求已被满足。

let validationResult = verifiedIdRequirement.validate()

一旦满足所有要求,您可以通过调用请求对象的 isSatisfied 方法来双重检查请求是否得到满足。

let isSatisfied = presentationRequest.isSatisfied()

然后调用 complete 方法完成请求。

  • 对于 VerifiedIdIssuanceRequest,complete 方法返回包含已发行的 VerifiedId 的成功结果,或者在发生错误时返回带有错误的失败结果。
  • 对于 VerifiedIdPresentationRequest,complete 方法返回成功结果或出错时返回带有错误的失败结果。
let result = await presentationRequest.complete()

VerifiedId

验证 ID 是包含有关实体的声明的可验证信息片段。

风格

发行者可以自定义已验证身份件的样式。我们支持BasicVerifiedIdStyle,它包含基本属性,如姓名、发行者、背景颜色、文字颜色和徽标,这些都可以用来表示已验证身份件的外观和感受。

存储已验证身份件

存储已验证身份件是应用开发者的责任。我们已经包括了辅助函数来编码/解码已验证身份件,以便将已验证身份件作为原始类型轻松存储在数据库中。

/// Encode a VerifiedId into Data.
let encodedVerifiedId = verifiedIdClient.encode(verifiedId: <Insert VerifiedId>)

/// Decode a VerifiedId from Data.
let verifiedId = verifiedIdClient.decode(from: encodedVerifiedId)

示例应用

  1. 克隆仓库。
  2. 打开一个终端窗口,并转到您克隆仓库的位置。
  3. 输入
git submodule update --init –recursive

这一步很重要,因为它将初始化库中使用的子模块。

  1. 在Xcode中打开钱包库工作区。(WalletLibrary.xcworkspace)
  2. 将目标切换到WalletLibraryDemo。
  3. 在模拟器上运行示例应用。

日志注入

您可以通过创建一个符合钱包库日志消费者协议的类,并将其注入到VerifiedIdClientBuilder中,将您自己的日志消费者注入到钱包库中。

let client = VerifiedIdClientBuilder()
    .with(logConsumer: <Your Log Consumer>)
    .build()

文档

贡献

此项目欢迎贡献和建议。大多数贡献都需要您同意一份贡献者许可协议(CLA),声明您有权并且确实授权我们使用您的贡献。有关详细信息,请访问https://cla.opensource.microsoft.com

提交拉取请求时,CLA机器人会自动判断您是否需要提供CLA,并以适当的方式装饰PR(例如状态检查、注释)。只需遵循机器人提供的说明即可。您只需在整个使用我们的CLA的仓库中进行一次操作。

本项目采用了Microsoft开放源代码行为准则。有关更多信息,请查看行为准则FAQ或联系[email protected]获取任何其他问题或意见。

商标

本项目中可能包含项目、产品或服务的商标或徽标。Microsoft的商标或徽标的合法使用受Microsoft的《商标及品牌指南》约束,并必须遵循。此项目的修改版本中Microsoft的商标或徽标的使用不得造成混淆或表明Microsoft的赞助。第三方商标或徽标的使用受其相关方政策的约束。