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()
验证 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)
- 克隆仓库。
- 打开一个终端窗口,并转到您克隆仓库的位置。
- 输入
git submodule update --init –recursive
这一步很重要,因为它将初始化库中使用的子模块。
- 在Xcode中打开钱包库工作区。(WalletLibrary.xcworkspace)
- 将目标切换到WalletLibraryDemo。
- 在模拟器上运行示例应用。
您可以通过创建一个符合钱包库日志消费者协议的类,并将其注入到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的赞助。第三方商标或徽标的使用受其相关方政策的约束。