I am designing a web access gateway that authenticates users through certificates using the mTLS mechanism. I would like to be able to identify the users that access the system using a Smartcard and separate them from those that do not in order to grant different levels of access and privilege.
When I receive the certificate on the server I can access all the parameters of the certificate but I don't know how it is possible to identify if the certificate comes from a Smartcard. At first sight the mTLS process is transparent and agnostic to the origin of the certificate, however, some websites manage to make this distinction.
How is it possible to determine somehow from the web server if the client certificate comes from a Smartcard (hardware certificate) or if it is a software certificate?