@property<EOL><INDENT>@abstractmethod<EOL>def identifiers(self):<DEDENT>
pass<EOL>
Returns this Subject's application-wide uniquely identifying principal,
or None if this Subject is anonymous because it doesn't yet have any
associated account data (for example, if they haven't logged in).

The term 'principal' is just a fancy security term for any identifying
attribute(s) of an application user, such as a username, or user id, or
public key, or anything else you might use in your application to
identify a user.  Yosai replaces the term 'principal' with 'identifier'
in recognition of terminology confusion that Shiro faces using 'principal'.

Uniqueness
-----------
Although given names and family names (first/last) are technically
considered identifiers as well, Yosai expects the object returned from
this method to be an identifying attribute unique across your entire
application.

This implies that attributes like given names and family names are usually
poor candidates as return values since they are rarely guaranteed to be
unique.  Items often used for this value:

    - A long-int RDBMS surrogate primary key
    - An application-unique username
    - A UUID
    - An LDAP Unique ID
    - any other similar, suitable, and unique mechanism valuable to your
      application

Most implementations will simply return identifiers.primary_principal.