#javascript #typescript #ionic-framework #ionic3 #cordova-plugins
#javascript #typescript #ionic-framework #ionic3 #cordova-плагины
Вопрос:
Прошло 2 дня. Я искал какую-то подсказку о библиотеке / функции проверки сертификата приложения в ionic. Как и в Android, я нашел SignatureCheck.java введите описание ссылки здесь, так можем ли мы также реализовать что-то подобное в TypeScript для проверки сертификата приложения такой же или нет? Любое предложение было бы полезно, спасибо
Ответ №1:
Я только что задавался тем же вопросом, и после недолгих поисков я наткнулся на этот пост: https://medium.com/@atifhussain.nu21/ssl-pinning-in-ionic-cordova-based-applications-ce993adcc07
Это выглядит как очень жизнеспособное решение, использующее плагин / библиотеку cordova ‘cordova-plugin-sslcertificatechecker’.
Пример кода:
import { Injectable, Injector } from '@angular/core';
import {
HttpEvent,
HttpHandler,
HttpInterceptor,
HttpRequest
} from '@angular/common/http';
import { Network } from '@ionic-native/network';
import { Observable } from 'rxjs/Rx';
import { CONFIG_CONSTANTS } from '../../common/constant/app-config';
import { MESSAGE_CONSTANTS } from '../../common/constant/message';
declare var window: any;
@Injectable()
export class RequestInterceptor implements HttpInterceptor {
helperFunction: HelperFunctions;
constructor(private network: Network, private injector: Injector) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.helperFunction = this.injector.get(HelperFunctions);
let setHeader = {
'ContentType': 'application/json',
'Accept': 'application/json',
'DEVICETYPE': 'MOBILE',
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': 'application/json',
'dataType': 'json'
};
let Host = CONFIG_CONSTANTS.BASE_URL;
if (this.network.type === 'none') {
this.helperFunction.showAlert(MESSAGE_CONSTANTS.CONNECTION_NOT_WORKING);
return next.handle(request);
}
return this.checkSecurity(`${Host}${request.url}`, request).flatMap((modifiedReq) => {
let newReq = null;
if (modifiedReq['message'] === 'CONNECTION_SECURE') {
newReq = request.clone({
url: `${Host}${request.url}`,
setHeaders: setHeader
});
}
return next.handle(newReq);
});
}
checkSecurity(URL, request) {
return new Observable((observer) => {
window.plugins.sslCertificateChecker.check(
(message) => {
return observer.next({req: request, message: message});
},
(message) => {
return observer.error({req: request, message: message});
},
URL,
CONFIG_CONSTANTS.FINGERPRINT);
});
}
}
Мне еще предстоит попробовать это для моего собственного проекта. Я надеюсь, что это поможет, дайте нам знать. 🙂