andreassolberg / DiscoJuice

DiscoJuice a javascript Login Discovery UI

Home Page:http://discojuice.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Expand typeahead searches

peter- opened this issue · comments

(Rewriting this to make it more general)

DiscoJuice should evaluate typed-in search strings against more data from SAML metadata:

Multiple languages: When searching for an IdP (typing into the input field) all languages (xml:lang) in metadata should be evaluated (I think) so that I can find e.g. Univie's SAML IdP either by searching on "Vienna" or "Wien".
As it is, like the Shibboleth EDS (but unlike the newer SWITCHwayf) DiscoJuice will only search in the language it detected/guessed from the browser API, i.e. I cannot find the same IdP with both searches. Since language detection in Chrome/Chromium seems to be broken (data point: EDS "detects" English, DiscoJuice "detects" German), I would prefer to find the IdP independently of the local browser environment.

Also, multiple XML elements (or attributes) should be searched for and offered in the following order (the MDUI spec has something on this, IIRC). I think the alrgorithm would be to determine a match for an entity based on searches in that order, and again show the first available element from that list in the order given. But maybe I'm making this needlessly complex ;)

  1. mdui:DisplayName
  2. md:OrganizationDisplayName
  3. md:OrganizationName
  4. entityID (last resort for display, maybe always include in searches)

The Shibboleth EDS always also searches entityIDs when typing into the search box. Personally I find that quite helpful as you can often identify your IdP more quickly based on (parts of) the DNS domain (think institutional email address) than by anything else.
Also just typing .at or .nl or whatever will quickly allow to limit IdPs in certain ccTLDs.
Might habe unexpected (to some) behaviour, though, when results pop up where you can't easily see why the IdP is being shown, e.g. if the DNS domain varies from anything visible in the DisplayName.