.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Net::Duo::Admin::Integration 3pm" .TH Net::Duo::Admin::Integration 3pm "2015-08-16" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Net::Duo::Admin::Integration \- Representation of a Duo integration .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 3 \& my $decoded_json = get_json(); \& my $integration = Net::Duo::Admin::Integration\->new($decoded_json); \& say $integration\->secret_key; .Ve .SH "REQUIREMENTS" .IX Header "REQUIREMENTS" Perl 5.14 or later and the modules HTTP::Request and HTTP::Response (part of HTTP::Message), \s-1JSON, LWP \s0(also known as libwww-perl), Perl6::Slurp, Sub::Install, and URI::Escape (part of \s-1URI\s0), all of which are available from \s-1CPAN.\s0 .SH "DESCRIPTION" .IX Header "DESCRIPTION" An integration is Duo's name for the metadata for a system or service that is allowed to use one or more of the Duo APIs. This object is the Perl representation of a Duo integration as returned by the Duo Admin \s-1API,\s0 usually via the \fIintegrations()\fR method of Net::Duo::Admin or by retrieving an integration by integration key. .SH "CLASS METHODS" .IX Header "CLASS METHODS" .IP "create(\s-1DUO, DATA\s0)" 4 .IX Item "create(DUO, DATA)" Creates a new integration in Duo and returns the resulting integration as a new Net::Duo::Admin::Integration object. \s-1DUO\s0 is the Net::Duo object that should be used to perform the creation. \s-1DATA\s0 is a reference to a hash with one or more of the following keys (the \f(CW\*(C`name\*(C'\fR and \f(CW\*(C`type\*(C'\fR keys are required): .RS 4 .IP "adminapi_admins" 4 .IX Item "adminapi_admins" Only valid for integrations of type \f(CW\*(C`adminapi\*(C'\fR. Set to a true value to grant permission to use all Admin \s-1API\s0 methods. Optional and defaults to false. .IP "adminapis_info" 4 .IX Item "adminapis_info" Only valid for integrations of type \f(CW\*(C`adminapi\*(C'\fR. Set to a true value to grant permission to use all Admin \s-1API\s0 account info methods. Optional and defaults to false. .IP "adminapis_integrations" 4 .IX Item "adminapis_integrations" Only valid for integrations of type \f(CW\*(C`adminapi\*(C'\fR. Set to a true value to grant permission to use all Admin \s-1API\s0 integration methods. Optional and defaults to false. .IP "adminapis_read_log" 4 .IX Item "adminapis_read_log" Only valid for integrations of type \f(CW\*(C`adminapi\*(C'\fR. Set to a true value to grant permission to use all Admin \s-1API\s0 log methods. Optional and defaults to false. .IP "adminapis_read_resource" 4 .IX Item "adminapis_read_resource" Only valid for integrations of type \f(CW\*(C`adminapi\*(C'\fR. Set to a true value to grant permission to use all Admin \s-1API\s0 methods that retrieve objects such as users, phones, and hardware tokens. Setting this key does not grant permission to change those objects or create new ones. Optional and defaults to false. .IP "adminapis_settings" 4 .IX Item "adminapis_settings" Only valid for integrations of type \f(CW\*(C`adminapi\*(C'\fR. Set to a true value to grant permission to use all Admin \s-1API\s0 settings methods. These control global settings for the entire Duo account. Optional and defaults to false. .IP "adminapis_write_resource" 4 .IX Item "adminapis_write_resource" Only valid for integrations of type \f(CW\*(C`adminapi\*(C'\fR. Set to a true value to grant permission to use all Admin \s-1API\s0 methods that create or modify objects such as as users, phones, and hardware tokens. Optional and defaults to false. .IP "enroll_policy" 4 .IX Item "enroll_policy" What to do after an enrolled user passes primary authentication. See the \&\*(L"\fIenroll_policy()\fR\*(R" method below for the possible values. Optional and defaults to \f(CW\*(C`enroll\*(C'\fR. .IP "greeting" 4 .IX Item "greeting" Voice greeting read before the authentication instructions to users who authenticate with a phone callback. Optional. .IP "groups_allowed" 4 .IX Item "groups_allowed" A comma-separated list of group IDs that are allowed to authenticate with the integration. Optional. By default, all groups are allowed. .IP "ip_whitelist" 4 .IX Item "ip_whitelist" \&\s-1CSV\s0 string of trusted IPs or \s-1IP\s0 ranges. Both CIDR-style ranges and ranges specified by two \s-1IP\s0 addresses separated by a dash (\f(CW\*(C`\-\*(C'\fR) are supported. Authentications from these \s-1IP\s0 addresses will not require a second factor. .Sp This can only be set for certain integrations. For the range of valid values and circumstances in which this can be used, see the Duo Admin \s-1API\s0 documentation. Optional. .IP "ip_whitelist_enroll_policy" 4 .IX Item "ip_whitelist_enroll_policy" What to do after a new user from a trusted \s-1IP\s0 completes primary authentication. See the \*(L"\fIip_whitelist_enroll_policy()\fR\*(R" method below for the possible values. Optional and defaults to \f(CW\*(C`enforce\*(C'\fR. .IP "name" 4 .IX Item "name" The name of the integration. Required. .IP "notes" 4 .IX Item "notes" Any further description of the integration. Optional. .IP "trusted_device_days" 4 .IX Item "trusted_device_days" Number of days to allow a user to trust the device they are logging in with. This can only be set for certain integrations and must be between 0 and 60. (0 disables this feature.) For the circumstances in which this can be used, see the Duo Admin \s-1API\s0 documentation. Optional. .IP "type" 4 .IX Item "type" The type of the integration. For a list of valid values, see the Duo Admin \s-1API\s0 documentation. Required. .IP "username_normalization_policy" 4 .IX Item "username_normalization_policy" Controls whether or not usernames should be altered before trying to match them to a user account. See the \*(L"\fIusername_normalization_policy()\fR\*(R" method below for the possible values. Optional and defaults to \f(CW\*(C`simple\*(C'\fR. .IP "visual_style" 4 .IX Item "visual_style" Look and feel of web content generated by the integration. This can only be set for certain integrations. For a list of valid values and circumstances in which this can be used, see the Duo Admin \s-1API\s0 documentation. Optional. .RE .RS 4 .RE .IP "new(\s-1DUO, DATA\s0)" 4 .IX Item "new(DUO, DATA)" Creates a new Net::Duo::Admin::Integration object from a full data set. \&\s-1DUO\s0 is the Net::Duo object that should be used for any further actions on this object. \s-1DATA\s0 should be the data structure returned by the Duo \s-1REST API\s0 for a single user, after \s-1JSON\s0 decoding. This constructor is primarily used internally by other Net::Duo::Admin methods. .IP "new(\s-1DUO, KEY\s0)" 4 .IX Item "new(DUO, KEY)" Creates a new Net::Duo::Admin::Integration object from the integration key. \s-1DUO\s0 is the Net::Duo object that is used to retrieve the integration from Duo and will be used for any subsequent operations. The \s-1KEY\s0 should be the integration key of the integration. This constructor is distinguished from the previous constructor by checking whether \s-1KEY\s0 is a reference. .SH "INSTANCE ACTION METHODS" .IX Header "INSTANCE ACTION METHODS" .IP "\fIdelete()\fR" 4 .IX Item "delete()" Delete this integration from Duo. After successful completion of this call, the Net::Duo::Admin::Integration object should be considered read-only, since no further changes to the object can be meaningfully sent to Duo. .IP "\fIjson()\fR" 4 .IX Item "json()" Convert the data stored in the object to \s-1JSON\s0 and return the results. The resulting \s-1JSON\s0 should match the \s-1JSON\s0 that one would get back from the Duo web service when retrieving the same object (plus any changes made locally to the object via set_*() methods). This is primarily intended for debugging dumps or for passing Duo objects to other systems via further \&\s-1JSON\s0 APIs. .SH "INSTANCE DATA METHODS" .IX Header "INSTANCE DATA METHODS" .IP "\fIadminapi_admins()\fR" 4 .IX Item "adminapi_admins()" Whether this admin integration may use all Admin \s-1API\s0 methods. .IP "\fIadminapis_info()\fR" 4 .IX Item "adminapis_info()" Whether this admin integration may use all Admin \s-1API\s0 account info methods. .IP "\fIadminapis_integrations()\fR" 4 .IX Item "adminapis_integrations()" Whether this admin integration may use all Admin \s-1API\s0 integration methods. .IP "\fIadminapis_read_log()\fR" 4 .IX Item "adminapis_read_log()" Whether this admin integration may use all Admin \s-1API\s0 log methods. .IP "\fIadminapis_read_resource()\fR" 4 .IX Item "adminapis_read_resource()" Whether this admin integration may use all Admin \s-1API\s0 methods that retrieve objects such as users, phones, and hardware tokens. .IP "\fIadminapis_settings()\fR" 4 .IX Item "adminapis_settings()" Whether this admin integration may use all Admin \s-1API\s0 settings methods. .IP "\fIadminapis_write_resource()\fR" 4 .IX Item "adminapis_write_resource()" Whether this admin integration may use all Admin \s-1API\s0 methods that create or modify objects such as as users, phones, and hardware tokens. .IP "\fIenroll_policy()\fR" 4 .IX Item "enroll_policy()" What to do after an enrolled user passes primary authentication. The value will be one of \f(CW\*(C`enroll\*(C'\fR, to prompt the user to enroll, \f(CW\*(C`allow\*(C'\fR, to allow the user to sign in without presenting an additional factor, and \&\f(CW\*(C`deny\*(C'\fR, to deny authentication for this user. .IP "\fIgreeting()\fR" 4 .IX Item "greeting()" Voice greeting read before the authentication instructions to users who authenticate with a phone callback. .IP "\fIgroups_allowed()\fR" 4 .IX Item "groups_allowed()" A reference to an array of group IDs that are allowed to authenticate with the integration. .IP "\fIip_whitelist()\fR" 4 .IX Item "ip_whitelist()" List of trusted IPs or \s-1IP\s0 ranges. Ranges may be in the form of \s-1CIDR\s0 network blocks or ranges specified by two \s-1IP\s0 addresses separated by a dash (\f(CW\*(C`\-\*(C'\fR) are supported. Authentications from these \s-1IP\s0 addresses will not require a second factor. Example values: .Sp .Vb 3 \& 192.0.2.8 \& 198.51.100.0\-198.51.100.20 \& 203.0.113.0/24 .Ve .Sp This is only supported with certain integration types. .IP "\fIip_whitelist_enroll_policy()\fR" 4 .IX Item "ip_whitelist_enroll_policy()" What to do after a new user from a trusted \s-1IP\s0 completes primary authentication. The value will be either \f(CW\*(C`enforce\*(C'\fR, meaning that the user will be subject to the normal enrollment policy as returned by \&\fIenroll_policy()\fR, or \f(CW\*(C`allow\*(C'\fR, which means that the user will be successfully authenticated without being required to enroll, skipping any enrollment policy. .IP "\fIintegration_key()\fR" 4 .IX Item "integration_key()" The identifier of this integration. For \f(CW\*(C`adminapi\*(C'\fR, \f(CW\*(C`accountsapi\*(C'\fR, \&\f(CW\*(C`rest\*(C'\fR, and \f(CW\*(C`verify\*(C'\fR integrations, this is the key used as the \&\f(CW\*(C`integration_key\*(C'\fR value when constructing a Net::Duo object. .IP "\fIname()\fR" 4 .IX Item "name()" The name of the integration. .IP "\fInotes()\fR" 4 .IX Item "notes()" Any further description of the integration. .IP "\fIsecret_key()\fR" 4 .IX Item "secret_key()" Secret used when configuring systems to use this integration. For \&\f(CW\*(C`adminapi\*(C'\fR, \f(CW\*(C`accountsapi\*(C'\fR, \f(CW\*(C`rest\*(C'\fR, and \f(CW\*(C`verify\*(C'\fR integrations, this is the key used as the \f(CW\*(C`secret_key\*(C'\fR value when constructing a Net::Duo object. This is equivalent to a password and should be treated with the same care. .IP "\fItrusted_device_days()\fR" 4 .IX Item "trusted_device_days()" Number of days to allow a user to trust the device they are logging in with, or \f(CW0\fR if this is disabled. This setting only has an effect for certain integrations. .IP "\fItype()\fR" 4 .IX Item "type()" The type of the integration. For a list of possible values, see the Duo Admin \s-1API\s0 documentation. .IP "\fIusername_normalization_policy()\fR" 4 .IX Item "username_normalization_policy()" Controls whether or not usernames should be altered before trying to match them to a user account. The value will be either \f(CW\*(C`none\*(C'\fR, indicating no normalization, or \f(CW\*(C`simple\*(C'\fR, in which \f(CW\*(C`DOMAIN\eusername\*(C'\fR and \&\f(CW\*(C`username@example.com\*(C'\fR will be converted to \f(CW\*(C`username\*(C'\fR before authentication is attempted. .IP "\fIvisual_style()\fR" 4 .IX Item "visual_style()" Look and feel of web content generated by the integration. This only has an effect for some integrations. For a list of valid values, see the Duo Admin \s-1API\s0 documentation. .SH "AUTHOR" .IX Header "AUTHOR" Russ Allbery .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright 2014 The Board of Trustees of the Leland Stanford Junior University .PP Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \*(L"Software\*(R"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: .PP The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. .PP \&\s-1THE SOFTWARE IS PROVIDED \*(L"AS IS\*(R", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\s0 .SH "SEE ALSO" .IX Header "SEE ALSO" Net::Duo::Admin .PP Duo Admin \s-1API\s0 for integrations .PP This module is part of the Net::Duo distribution. The current version of Net::Duo is available from \s-1CPAN,\s0 or directly from its web site at .