В нашем веб-приложении будет два способа входа:
- Имя пользователя, пароль и ключ TOTP (у нас это работает)
- Имя пользователя, пароль и карта CAC/PIV
У нас было несколько идей:
Идея №1:
Мы нашли еще несколько идей, которые предлагают использовать настройку clientAuth="true". на нашем сервере Tomcat или аналогичном. [1] [2] [3] Это было бы идеально, так как это самый простой способ реализовать это, но поскольку нам нужны 2 метода, упомянутых выше, мы не хотим, чтобы приложение всегда< /em> требует бейдж.
Чтобы обойти эту проблему, мы подумали, что могли бы создать какое-то «шлюзовое» приложение, единственной целью которого является выполнение аутентификации по бейджу. (Может быть, что-то вроде этого веб-сайта max.gov [4] или других сайтов департаментов, ссылки на которые есть на этой странице.)
Идея № 2:
Использовать библиотека с открытым исходным кодом из GitHub. Мы нашли несколько источников, которые рекомендуют их:
- OpenSC [5]: этот правительственный сайт [6] также ссылается на него. , но похоже, что это какое-то веб-расширение.
- web-smart-card [7]: мы не знаем, как его использовать.< /li>
PKCS#11: на это ссылаются некоторые другие [8] [9] [10] но похоже, что это для настольных приложений — это правда ? И некоторые сказали, что это может быть медленно? А в ответе по ссылке №9 используются сервлеты, которые не используются в приложениях Spring Boot (насколько я могу судить).
Другие идеи:
Мне нравится обсуждение здесь [11], но оно немного более теоретический, без какого-либо примера кода.
Эти два поднимают несколько хороших вопросов [12] [13], но на них нет ответов.
Некоторые используют node.js или React, как этот [14], но я слышал, что использовать его в приложении Spring Boot — не лучший вариант.
Там это также Руководство разработчика [15] для устройства чтения карт, которое используется конечными пользователями этого приложения, но я пока не нашел там ничего полезного.
Мы также подумали об использовании доступной библиотеки от Okta, поскольку у них теперь есть возможность использования методов аутентификации PIV-карты [16]. Однако оказывается, что Okta — это платная услуга, которая нам не подходит.
Ссылки:
- < li>Аутентификация по карте общего доступа (CAC) с использованием Java
- Попытка использования смарт-карты для аутентификации в Tomcat
- https://blog.e- zest.com/enable-tomcat-server-for-smart-card-authentication
- https://login.max.gov/cas/login?bypassMaxsso=true
- https://github.com/OpenSC/OpenSC
- https://www.idmanagement.gov/implement/scl-firefox/
- https://github.com/WICG/web-smart-card
- https://stackoverflow.com/a/3826528/15811117
- Аутентификация по карте общего доступа (CAC) с использованием приложения Vaadin
- Аутентификация CAC DoD PKI в Tomcat (встроена в JBoss)
- Аутентификация CAC в веб-приложении Java
- Аутентификация CAC на сервере Tomcat
- Аутентификация пользователя с использованием CAC (карта общего доступа) в веб-приложении, работающем в Jetty, для приложение, используемое правительственным учреждением США
- https://marcioreis.pt/how-to-communicat ... g-node-js/
- https://www.hidglobal.com/documents/omn ... oper-guide
- https://www.okta .com/blog/2018/05/using-personal-identity-verification-piv-credentials-to-enable-passwordless-authentication/
Подробнее здесь: https://stackoverflow.com/questions/783 ... java-tomca