将BankID(瑞典身份验证服务)集成到Flutter(Android和iOS)中

but5z9lq  于 2023-01-14  发布在  Flutter
关注(0)|答案(1)|浏览(216)

我正在尝试在我的一个项目中实现瑞典银行身份认证。但是互联网上可用的资源太少了。有人能帮我如何在flutter应用程序中实现银行身份认证吗?

wwtsj6pe

wwtsj6pe1#

不知道你有多少经验,所以也许你已经知道一些东西,但这是我如何解决它。
该服务具有用于执行验证的三个主要端点:
/auth/start:此端点用于启动验证过程,并生成一个唯一密钥(称为bankIdToken),该密钥以GUID的形式返回。
/auth/status:此端点用于检查已使用/auth/start端点启动的验证进程的状态。状态可以是“正在等待”或“已完成”。
/auth/verify:此端点用于验证已完成验证过程的用户的身份,并返回包含用户信息的JSON对象。
要执行验证,步骤如下:
/auth/start发送请求以启动流程并接收bankIdToken。将bankIdToken传递给/auth/verify以触发用户设备上的验证(移动的,pc),状态将为等待。用户在其设备上完成该过程后,通过向/auth/status发送一个请求来检查状态,这将把状态更改为completed。向/auth/verify发送一个请求来验证用户,这将返回一个包含用户信息的JSON对象。
您还可以在https://demo.bankid.com/获得测试bankid,并在skatteverket或https://fejka.nu/获得假瑞典人号码(GDPR批准)
这是我的Flutter代码,带有硬编码值

class AuthDataSource {
  Future<AuthVerifyModel> authFlow() async {
    final authStartResponse = await http.post(
      Uri.https(BASEURL, '/auth/start'),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
      body: jsonEncode(<String, String>{
        'bankIdNumber': '198806192392',
      }),
    );
    if (authStartResponse.statusCode != 200) {
      throw ServerException();
    }
    final authStartModel =
        AuthStartModel.fromJson(jsonDecode(authStartResponse.body));

    final authStatusResponse = await http.post(
      Uri.https(BASEURL, '/auth/status'),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
      body: jsonEncode(<String, String>{
        'bankIdToken': authStartModel.bankIdToken.toString(),
      }),
    );
    if (authStatusResponse.statusCode != 200) {
      throw ServerException();
    }

    final authVerifyResponse = await http.post(
      Uri.https(BASEURL, '/auth/verify'),
      headers: <String, String>{
        'Content-Type': 'application/json; charset=UTF-8',
      },
      body: jsonEncode(<String, String>{
        'bankIdToken': authStartModel.bankIdToken.toString()
      }),
    );
    if (authVerifyResponse.statusCode != 200) {
      throw ServerException();
    }

    return AuthVerifyModel.fromJson(jsonDecode(authVerifyResponse.body));
  }
}

相关问题