Configure a trusted endpoint in ADFS v2.0+
ADFS is sometimes also abbreviated as AD FS.
NOTE:
This document has now been superceded by Integrate iShare GIS with ADFS
ADFS Relying Party Trust
See: https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-relying-party-trust for details of how to setup a Relying Party Trust in the current version on ADFS on Windows 2016, which is how iShare GIS will operate in an ADFS environment. The method will be similar but not identical in Windows 2012 and Windows 2008.
While configuring ADFS itself is outside of the scope of iShare documentation or consultancy, the following are what we understand are the necessary steps to enable iShareGIS to be a Relying Party Trust:
- iShare GIS Relying Party Trust must be setup manually
- Support WS-Federation Passive protocol
- Ensure Replying Party Identifier matches the Relying Party Trust URL (which is the iShare GIS application URL, see below)
- Once the trust has been configured, pass the Federation Metadata document URL (or a file, if the iShareGIS server cannot access your ADFS service or ADFS proxy directly) to the consultant setting up iShare GIS.
- Once iShare GIS has been configured to make use of ADFS, test to make sure that users get redirected to the ADFS service or Proxy when trying to access iShare GIS, and that they successfully authenticate
- Setup rules for Name and Role claims (see below).
Relying Party Identifier
The Relying Party Identifier in ADFS for iShare GIS is just the web application's path, e.g.: https://server.domain.name/ishare.web/. Unless the iShare web application is always going to be served via the same IP address, this should be configured after the server has been given a permanent DNS name that clients will use.
Example Issuance Transform Rules
Step 1 - Pass through Name claims
- Rule template = Pass Through or Filter an Incoming Claim
- Incoming claim type = Name
- Pass through all claim values
This step can be replaced by the Alternative Name Configuration defined below.
Step 2 - Pass through Role claims
- Rule template = Pass Through or Filter an Incoming Claim
- Incoming claim type = Role
- Pass through all claim values.
Step 3 - Send GIS Group as iShareUsers Role
- Rule template = Send Group Membership as a Claim
- User’s group = AD\GIS
- Outgoing claim type = Role
- Outgoing claim value = iShareUsers
Step 4 - Send Managers Group as iShareAdmin Role
- Rule template = Send Group Membership as a Claim
- User’s group = AD\Managers
- Outgoing claim type = Role
- Outgoing claim value = iShareAdmin
The outgoing claim values for the roles will need to correspond to local Windows Groups on the iShare Web Server that are used for iShareGIS Map Source Roles.
Claim Rule Language Definitions
The claim rule language definitions for the above are as follows:
(c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] => issue(claim = c);) (c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/role"] => issue(claim = c);) (c:[Type "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value “S-1-5-21-3214250622-2034890151-3562794581-1107”, Issuer == “AD AUTHORITY”] => issue(Type = “http://schemas.microsoft.com/ws/2008/06/identity/claims/role”;, Value = “iShareUsers”, Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, ValueType = c.ValueType);) (c:[Type "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value “S-1-5-21-3214250622-2034890151-3562794581-1104”, Issuer == “AD AUTHORITY”] => issue(Type = “http://schemas.microsoft.com/ws/2008/06/identity/claims/role”;, Value = “iShareAdmin”, Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, ValueType = c.ValueType);)
Alternative Name configuration
You can replace Step 1 above with the following:
Step 1 - Send email as Name
- Rule template = Send LDAP Attributes as Claims
- Attribute store = Active DIrectory
Mapping of LDAP attributes to outgoing claim types
LDAP Attribute | Outgoing Claim Type |
---|---|
E-Mail-Addresses | Name |
Claim Rule Language Definition
The claim rule language definition for this is:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"), query = ";mail;{0}", param = c.Value);